SQLite如何基于另一表指定列的多值查询对应图片元数据
SQLite多值匹配查询解决方案
你可以通过以下两种常用方式实现需求:
- 方案1:替换
=为IN运算符IN运算符天然支持匹配子查询返回的多个结果值,是最贴合你原有写法的修改方案,修改后的语句如下:
SELECT * FROM IMG_META WHERE ImageName IN ( SELECT DISTINCT ImageName FROM IMG_REGION WHERE Country = 'denmark' OR Country = 'Germany' )
这里添加DISTINCT是为了避免子查询返回重复的ImageName导致冗余匹配,若你确认IMG_REGION表中ImageName唯一也可以省略。
- 方案2:使用INNER JOIN关联查询
通过两张表的公共键直接关联查询,在数据量较大时执行效率通常高于子查询写法,语句示例如下:
SELECT m.* FROM IMG_META m INNER JOIN IMG_REGION r ON m.ImageName = r.ImageName WHERE r.Country IN ('denmark', 'Germany')
这里直接用IN简化了多个国家的条件判断,和原来的OR写法逻辑完全一致。
内容的提问来源于stack exchange,提问作者SharathKumar_KE
相关产品推荐
相关产品推荐

