1
SELECT business.name FROM business WHERE (3) NOT IN (1,2,3)

以上是一个有效的 MySQL 语句。但我需要一个允许 NOT IN 条件与 2 个列表一起使用的语句,即第一个列表中的任何元素都不会出现在第二个列表中。

例如

SELECT business.name FROM business WHERE (4, 5) NOT IN (1,2,3)

注意:每个列表只有整数值,并且每个列表都是使用嵌套查询从不同的表中生成的。

先感谢您

4

2 回答 2

1

如果两个列表的值都由嵌套查询检索,
那么您可以连接这两个嵌套查询的结果集并检查它们是否具有共同值。
如果是 - 这意味着列表 1 中的某些值存在于列表 2

中最终查询可能如下所示:

select *
from business
where not exists(
  SELECT 1 FROM 
  ( 
      -- nested query that retrieves values of list 1
      SELECT val FROM list1
  ) x
  JOIN
  (
    -- nested query that retrieves values of list 2
      SELECT val FROM list2
  ) y
  ON x.val = y.val
);

SQLFiddle 演示 --> http://www.sqlfiddle.com/#!2/5e47b/2

于 2013-08-24T20:32:31.953 回答
0

不幸的是,您必须对第一组的每个元素使用 AND 条件:

SELECT
    business.name
FROM
    business
WHERE
    4 NOT IN (1,2,3)
AND
    5 NOT IN (1,2,3)
于 2013-08-24T20:12:01.913 回答