2017-09-23 108 views
0

我有兩個SQL表「user」和「entries」。檢查值是否只存在於第一個表中而不存在於第二個表中

如果用戶是否存在於第一個表「用戶」中,並且用戶是否在表格「條目」中存在條目,我想只檢查一個查詢。

我想製作類似評分系統的東西。用戶應該存在於表「用戶」中,並且表中沒有條目「條目」的情況。因爲每個用戶只能創建一個條目。

是否可以只用一個查詢來完成,我該怎麼做?

我我怎麼能有兩個查詢

SELECT COUNT(*) amount FROM user 

SELECT COUNT(*) quantity FROM entries WHERE user_id = $userID 
+0

我沒有看到兩個查詢之間的關係。你能在這裏提供一些樣本數據嗎? –

+0

請參閱'LEFT JOIN ... IS NULL' –

回答

1

你應該用做只知道 「NOT EXISTS」 運營商:

SELECT id FROM user 
WHERE id = $userID 
AND NOT EXISTS (SELECT * FROM entries where user_id = $userID); 

它將返回僅當用戶存在於表「用戶」中並且在表「條目」中沒有條目時才存在行。

+0

謝謝!我有一點改善它。 EXISTS很慢。應當使用 https://mariadb.com/kb/en/library/exists-to-in-optimization/ SELECT ID FROM用戶WHERE ID = $用戶ID 和ID NOT IN(SELECT * FROM項其中user_id = $ userID); – Mark

相關問題