2013-12-09 39 views
0

我嘗試編寫一個解決方案,其中有多個鏈接表。MySQL:計數不存在的值

table1包含在字段與IDS行k_id

table2包含其中每行分配有k_id行(如s_k_id),但任何k_id可以具有table2多個行。在table2任何條目只能有一個k_id

現在我想有未在table2作爲s_k_idk_ids計數(後期可能的列表)。

我希望你能理解我的問題。

我的解決方案就是這樣,但我認爲它可以更好地解決?

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

+0

有幫助嗎?你的問題需要更多幫助嗎? – peterm