MySQL List Set理论,关系型数据库

标签 mysql sql database relational

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)

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

提前谢谢你

最佳答案

如果两个列表的值都被嵌套查询检索到,
然后你可以加入这两个嵌套查询的结果集并检查它们是否具有共同的值。
如果是 - 这意味着列表 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

关于MySQL List Set理论,关系型数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18422570/

相关文章:

mysql - 使用 if 语句从 4 个不同的表中选择记录

python - 在 Python 中使用 mdbtools 从 .mdb 文件中提取和排序数据

android - SQLite 返回错误代码 14

php - 包含 2 个或更多字段的 sql 搜索

mysql - 内连接根据日期仅从第二个表中选择一行

sql - 有没有办法通过 tsql 获取 Windows 任务管理器详细信息?

mysql - 如果数据库中的表被更新或更改,它是否有可能自动转储到 .sql 文件中?

mysql - 计算唯一字段mysql

mysql - 如何测试 PHP 源代码的 SQL 注入(inject)(无需自动工具)?

sql - 女士 Access 排名前三名