我有一张这样的表:
table: album_image(album_id, image_id)
album_id image_id
----------------------------
87 2326
87 2325
86 2325
85 5689
89 56
拥有2个专辑ID(比方说87和86),我想只提取不在这2张专辑中的image_id。
所以,例如,如果我有album_id 87和86,它应该返回image_id:2326
我如何进行查询?
答案 0 :(得分:1)
不在运算符中的版本(在mysql中不存在减运算符来执行此类操作):
select image_id from album_image
where album_id = 86
and image_id not in (select image_id
from album_image
where album_id = 87)
union
select image_id from album_image
where album_id = 87
and image_id not in (select image_id
from album_image
where album_id = 86)
也可以使用外连接。
答案 1 :(得分:1)
根据要求,我们需要找到在album_id 86或87上但不能同时在两者上的图片,这可以使用group by
和having count
select
image_id from album_image
where album_id in (87,86)
group by image_id having count(*)=1 ;
答案 2 :(得分:0)
select image_id from album_image where album_id not in (86, 87)