Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 排除一个表中的重复值并返回剩余值_Mysql - Fatal编程技术网

Mysql 排除一个表中的重复值并返回剩余值

Mysql 排除一个表中的重复值并返回剩余值,mysql,Mysql,我有一张这样的桌子: table: album_image(album_id, image_id) album_id image_id ---------------------------- 87 2326 87 2325 86 2325 85 5689 89 56 有两个相册id(比如87和86),我只想提取不在这两个相册中的图像id 例如,如果我有相册_id 87和86,它应该返回image

我有一张这样的桌子:

table: album_image(album_id, image_id)

album_id    image_id
----------------------------
87          2326
87          2325
86          2325
85          5689
89          56
有两个相册id(比如87和86),我只想提取不在这两个相册中的图像id

例如,如果我有相册_id 87和86,它应该返回image_id:2326


如何执行查询?

带有not in运算符的版本(mysql中不存在用于执行此操作的减号运算符):

select image_id from album_image where album_id not in (86, 87)

也可以使用外部连接。

根据要求,我们需要查找相册id 86或87上的图像,但不能同时查找两者,这可以使用
分组方式和
计数方式来完成

select 
image_id from album_image 
where album_id in (87,86) 
group by image_id having count(*)=1 ;

图片_id 2326在相册87中。你的意思是它应该返回5689和56吗?你的问题不清楚。请解释逻辑。此解决方案返回两个表中的值My Error;-)在子选项中,我将“image\u id=8x”替换为“album\u id=8x”。在样本数据中,它应该返回两条记录。noap,在这个样本数据中,它应该返回一条记录:2326yeap,就是它。谢谢
select 
image_id from album_image 
where album_id in (87,86) 
group by image_id having count(*)=1 ;