我有两个包含以下列的表:
tbl_a: id, date, data
tbl_b: id, date, a_id, data
在tbl_b.a_id中保存了tbl_a相关记录whitout外键定义的id。
我不会从tbl_a中选择所有id,其中tbl_b中有0条记录 tbl_b.a_id = tbl_a.id AND tbl_b.date = tbl_a.date。
答案 0 :(得分:1)
这是您正在寻找的简单的NOT EXISTS子句(来自tbl_a的记录不存在 tbl_b中的条目):
select id
from tbl_a a
where not exists
(
select *
from tbl_b b
where b.a_id = a.id
and b.date = a.date
);
UPDATE:这与NOT IN子句相同,后者更容易阅读。但是,只有当tbl_b.a_id
和tbl_b.date
都不可为空时,这才有效。
select id
from tbl_a
where (id, date) not in (select a_id, date from tbl_b);
答案 1 :(得分:0)
您可以尝试以下查询:
SELECT
tbl_a.id
FROM
tbl_a LEFT JOIN tbl_b ON tbl_b.a_id = tbl_a.id AND tbl_a.date = tbl_b.date
WHERE tbl_b.a_id IS NULL
注意:强> 你需要收集一些关于MySQL连接的知识,特别是左连接才能理解上面的查询。 您可以查看此article。
N:B:如果您不想采用LEFT JOIN
,那么您可以查看其他答案。