加入两个选择语句

时间:2019-11-06 03:04:52

标签: mysql

我有两个选择语句来回答问题“列出正在运行的任何人,如果他们投票,他们不会自己投票”。我得到了为自己投票的所有人和没有参加竞选的所有人。

我当时正在考虑使用Except来连接两个select语句,但是不可能在运行mysql5.0的mysql上使用,并且我正在考虑使用join但不确定如何与内部/外部连接一起使用。

Select Distinct P.First_Name, P.Mid_Name, P.Mid_Name, P.Last_Name
From Person P, Vote V, Candidate C
Where V.Voter_ID = C.Person_ID AND C.Person_ID = P.Person_ID

每个人都在奔跑

Select Distinct P.First_Name, P.Mid_Name, P.Last_Name
From Person P, Vote V, Candidate C
Where V.Voter_ID = V.Candidate_ID AND V.Candidate_ID = C.Person_ID AND C.Person_ID = P.Person_ID

每个为自己投票的人

结果应该是两者之间的差异。

2 个答案:

答案 0 :(得分:0)

根据您给定的查询,我认为下面的查询应该有效,

Select Distinct P.First_Name, P.Mid_Name, P.Last_Name
From Person P, Vote V, Candidate C
Where V.Voter_ID != V.Candidate_ID AND V.Candidate_ID = C.Person_ID AND C.Person_ID = P.Person_ID AND V.Voter_ID = C.Person_ID

答案 1 :(得分:0)

使用not exists过滤那些为自己投票的候选人。

select distinct P.First_Name, P.Mid_Name, P.Mid_Name, P.Last_Name 
from Person P
inner join Vote V on V.Voter_ID = C.Person_ID
inner join Candidate C  on C.Person_ID = P.Person_ID
where not exists
    (select 1 from Person P
        inner join Vote V on V.Voter_ID = V.Candidate_ID 
        inner join Candidate C on V.Candidate_ID = C.Person_ID
        where 
        C.Person_ID = P.Person_ID)
相关问题