2017-09-23 97 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

相关问题