如何获取MySQL选择中的其余项目? 让我们说这个表格有id和颜色,并且想要返回我数据库中不存在的查询颜色。
ID COLOR
1 red
5 brown
33 pink
如果我传入一份颜色列表,我想找回未找到的颜色
('red','brown','blue')
应该返回('blue')
和
('yellow','pink','orange')
应该返回('yellow','orange')
我知道我可以使用其他语言来完成此操作,以排除搜索数组中的命中,但在单个SQL中执行此操作会很简单。
答案 0 :(得分:1)
您可以将查询构建为:
SELECT sub.color
FROM (SELECT 'red' AS color
UNION ALL SELECT 'brown'
UNION ALL SELECT 'blue') AS sub
LEFT JOIN tab
ON sub.color = tab.color
WHERE tab.id IS NULL;
的 SqlFiddleDemo
强>
输出:
╔════════╗
║ color ║
╠════════╣
║ blue ║
╚════════╝
第二
SELECT sub.color
FROM (SELECT 'yellow' AS color
UNION ALL SELECT 'pink'
UNION ALL SELECT 'orange') AS sub
LEFT JOIN tab
ON sub.color = tab.color
WHERE tab.id IS NULL;
的 SqlFiddleDemo2
强>
输出:
╔════════╗
║ color ║
╠════════╣
║ yellow ║
║ orange ║
╚════════╝