【发布时间】:2019-07-22 21:30:13
【问题描述】:
我有一个表media_tags,其中包含两列将媒体链接到用户定义的标签。我想做一些查询,选择标签上条件复杂的媒体。我当前的解决方案是多次使用相同的相关子查询。
多个 SO 答案已将我指向 CTE,但据我了解,这些只能用于替换不相关的子查询。
SELECT outer.media_id
FROM media_tags AS outer
WHERE 1 IN (SELECT tag_id FROM media_tags AS inner WHERE outer.media_id = inner.media_id)
AND 2 NOT IN (SELECT tag_id FROM media_tags AS inner WHERE outer.media_id = inner.media_id)
AND (3 IN (SELECT tag_id FROM media_tags AS inner WHERE outer.media_id = inner.media_id)
OR 4 IN (SELECT tag_id FROM media_tags AS inner WHERE outer.media_id = inner.media_id));
【问题讨论】:
标签: sql sqlite query-optimization correlated-subquery