我一直在执行此sql查询。...我有两个表,一个包含所有用户,另一个具有每个用户的投票。 我要检查尚未投票的用户。 我正在尝试类似的方法,但是没有用。
usuarios table
----------------------
| id | username |
----------------------
votes
--------------------------------------------
| id | user | mes | ano |
SELECT DISTINCT a.username
FROM usuarios a
, votes b
WHERE a.username != b.user
AND b.ano = 2019
AND b.mes = 11
on my usuarios table i hvae 20 entries.
1 | user1
2 | user2
........
on my votes table
1 | user1 | 11 | 2019
,通过查询,我只想从(usuarios表)中获得不在我的投票表中的用户;
答案 0 :(得分:5)
您的描述使用NOT EXISTS转换为相关子查询:
SELECT a.username
FROM usuarios a
WHERE NOT EXISTS
(
SELECT *
FROM votes b
WHERE a.username = b.user -- no vote from this user
AND b.ano = 2019 -- in this year
AND b.mes = 1 -- and month
)
答案 1 :(得分:2)
只需使用左JOIN
SELECT DISTINCT a.username FROM usuarios a
LEFT JOIN votes b
ON a.id = b.id
WHERE b.user is null
答案 2 :(得分:1)
根据SQL版本,您将遇到类似这样的信息。 MS SQL就是这样,但是其他版本的SQL将非常相似:
SELECT *
FROM USARIOS A
LEFT JOIN
VOTES B
ON A.ID = B.ID
WHERE B.USER IS NULL