如何查询两个表以获取尚未投票的用户?

时间:2019-11-21 18:15:44

标签: mysql sql database

我一直在执行此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表)中获得不在我的投票表中的用户;

3 个答案:

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