mysql - 从一个表中选择另一个表中不存在的记录

标签 mysql sqlite jdbc

我在 sqlite 数据库中有 2 个表 TABLE1TABLE2。 TABLE 2 有 TABLE1 的一些记录。我想要的是从表 1 中选择所有记录,这些记录在表 2 中不存在。所以我编码:

String sq = "SELECT TABLE1.name, TABLE1.surname, TABLE1.id FROM TABLE1"
            + "LEFT JOIN TABLE1"
            + "ON TABLE1.id <> TABLE2.id";

但是这个查询返回了一些我不明白的东西。哪个是正确的查询?

最佳答案

检查第二个表中的 NULL,如:

SELECT TABLE1.name, TABLE1.surname, TABLE1.id 
FROM TABLE1
LEFT JOIN TABLE2 ON TABLE1.id = TABLE2.id
WHERE TABLE2.id IS NULL

NOT EXISTS 的替代解决方案:

SELECT TABLE1.name, TABLE1.surname, TABLE1.id 
FROM TABLE1
WHERE NOT EXISTS(SELECT * FROM TABLE2 WHERE TABLE1.id = TABLE2.id)

还有一个 NOT IN:

SELECT TABLE1.name, TABLE1.surname, TABLE1.id 
FROM TABLE1
WHERE TABLE1.id NOT IN(SELECT id FROM TABLE2)

关于mysql - 从一个表中选择另一个表中不存在的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30779708/

相关文章:

java - Spring : how to get multiple datasource with GenericDao?

java - jdbc driver for Microsoft SQL Server CE(Compact Edition) 3.5

php - 在悬停时显示来自谷歌图像搜索的数据属性的图像

php - 通过 phpMyAdmin 执行 MySql #1054 错误

php - 如何在一个查询中从三个表中进行选择

ios - Int64 使用 SQLite 抛出 "Number overflow"

android - SQLite 是否保证结果的顺序与表相匹配?

java - 如何提交从jsp页面中的下拉列表中选择的选项以执行mysql查询

mysql - 如何调用此 shell 脚本将 mysqldump 转换为 SQLite 兼容语法

java - Clojure JDBC 一次事务中的不同数据库连接