MySQL:计算不存在的值

时间:2013-12-09 08:32:47

标签: mysql sql sql-server

我尝试编写一个解决方案,其中有多个链接表。

table1包含字段k_id

中包含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语句正在做什么)

谢谢!

1 个答案:

答案 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 演示