返回在mySQL中不匹配的字符串

时间:2015-10-31 19:09:56

标签: mysql

如何获取MySQL选择中的其余项目? 让我们说这个表格有id和颜色,并且想要返回我数据库中不存在的查询颜色。

ID    COLOR
1     red
5     brown
33    pink

如果我传入一份颜色列表,我想找回未找到的颜色

('red','brown','blue')应该返回('blue')

('yellow','pink','orange')应该返回('yellow','orange')

我知道我可以使用其他语言来完成此操作,以排除搜索数组中的命中,但在单个SQL中执行此操作会很简单。

1 个答案:

答案 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 ║
╚════════╝