【问题标题】:How to select values that do not exist in database MySQL如何选择数据库 MySQL 中不存在的值
【发布时间】:2024-04-26 08:30:01
【问题描述】:

我想知道是否可以选择 MySQL 数据库中不存在的值。

我当前的 SQL 是:

SELECT *
FROM (
    VALUES (1), (2)
) AS ids
WHERE 
    NOT EXISTS ( 
        SELECT *
        FROM data_table dt
        WHERE dt.id = ids.id
    );

当前 SQL 的问题是 ids.id 列不存在。 我已经检查过:

  • mysql 文档,其中说列可以作为 ids.column_0 访问,但失败了。
  • postgresql 文档显示它可以使用“as ids(id)”来完成,但这也失败了。想也许 MySQL 文档有一些不成文的文档。

如何获取数据库中不存在的id?

【问题讨论】:

标签: mysql sql select mariadb subquery


【解决方案1】:

在 MySQL 中,您可以这样表述:

SELECT *
FROM (SELECT 1 id UNION ALL SELECT 2) AS ids
WHERE NOT EXISTS (SELECT 1 FROM data_table dt WHERE dt.id = ids.id);

最新版本支持VALUES ROW() 语法:

SELECT *
FROM (VALUES ROW(1), ROW(2)) as ids(id)
WHERE NOT EXISTS (SELECT 1 FROM data_table dt WHERE dt.id = ids.id);

【讨论】: