MySQL:选择不在列表中的项目

时间:2012-01-17 22:33:12

标签: mysql

如何选择列表中但不在表格中的项目?例如,如果给我一个像'apple', 'banana', 'carrot'这样的列表,我有一个像:

这样的表
fruit:
------
apple
banana

我希望我的查询结果为'carrot',因为它是列表中不存在的列表中的元素。我该怎么做?

2 个答案:

答案 0 :(得分:4)

实现此目的的最佳方法是将列表放在表格中:

Table fruitable:
fruit 
------
apple
banana

Table fruitable_list:
fruit
------
apple
banana
carrot

然后您的查询变为:

SELECT fruitable_list.fruit FROM fruitable_list
LEFT JOIN fruitable
  ON fruitable.fruit = fruitable_list.fruit
WHERE fruitable.fruit IS NULL

结果:

fruit
------
carrot

很难在结果集中返回不在数据集中的记录。

答案 1 :(得分:3)

SELECT v.fruit FROM (
    SELECT 'apple' AS fruit
    UNION ALL
    SELECT 'banana'
    UNION ALL
    SELECT 'carrot') v
LEFT JOIN friuttable ft ON ft.fruit = v.fruit
    WHERE ft.fruit IS NULL

<击> 另:

<击>
SELECT fruit
  FROM fruittable
 WHERE FIND_IN_SET(fruit, 'apple,banana,carrot') = 0

<击>