MySQL连接并返回硬编码列表中不存在的行
我需要一些关于MySQL查询的帮助。我有一个产品颜色ID列表,我想找出数据库中不存在的颜色ID。下面的查询从数据库返回匹配的colorID。我想看看哪些颜色在db中不存在MySQL连接并返回硬编码列表中不存在的行,mysql,Mysql,我需要一些关于MySQL查询的帮助。我有一个产品颜色ID列表,我想找出数据库中不存在的颜色ID。下面的查询从数据库返回匹配的colorID。我想看看哪些颜色在db中不存在 select cs.imageid from colorids cs where cs.imageid in ( 3333, 2222, 4444, 5555, 6666, 7777, 8888, ) 您可以这样硬编码列表,然后使用左连接: SELECT list.colorid FROM ( SELECT 3333
select cs.imageid from colorids cs
where cs.imageid in
(
3333,
2222,
4444,
5555,
6666,
7777,
8888,
)
您可以这样硬编码列表,然后使用左连接:
SELECT list.colorid
FROM (
SELECT 3333 colorid
UNION ALL
SELECT 2222
UNION ALL
SELECT 4444
) AS list LEFT JOIN colorids cs
ON list.colorid = cs.imageid
WHERE
cs.imageid IS NULL
不能那样做。您需要将这些值放入临时表中,然后将该表与另一个表连接起来<代码>在中是任何“任意”检查。它不会告诉你是否有东西“丢失”。删除最后一行(8888,)末尾的,并说where NOT in(……)谢谢!我在临时表中插入了所有imageID,然后我说从临时表中选择,其中imageID不在实际表中,它没有返回任何内容。我想还有别的问题!谢谢