我尝试编写一个解决方案,其中有多个链接表。
table1
包含字段k_id
table2
包含每行分配k_id
的行(s_k_id
),但任何k_id可能在table2
中有多行。 table2
中的任何条目只能有一个k_id
现在我希望k_ids
的{{1}}计数(可能是一个列表),table2
s_k_id
中没有使用{。}}。
我希望你能理解我的问题。
我的解决方案就是这样,但我认为它可以更好地解决?
SELECT count(k_id) AS `count` FROM tabel1 WHERE k_id NOT IN (SELECT s_k_id FROM table2)
我怎样才能更好地实现这一目标? (请简短说明您的SQL语句正在做什么)
谢谢!
答案 0 :(得分:1)
你可以尝试
SELECT COUNT(DISTINCT k_id) count
FROM table1 t1 LEFT JOIN table2 t2
ON t1.k_id = t2.s_k_id
WHERE t2.s_k_id IS NULL
或
SELECT COUNT(k_id) count
FROM table1 t
WHERE NOT EXISTS
(
SELECT *
FROM table2
WHERE s_k_id = t.k_id
)
这是 SQLFiddle 演示