我有两个名为'FORMAT
Range("12:12").Insert
Range("C7").Copy
Range("C12:I12").PasteSpecial
Range("C12:I12").ClearContents
'DATE
Range("C7").Copy
Range("C12").PasteSpecial
Range("C12").NumberFormat = "m/d/yyyy"
'ARRIVAL
Range("C7").Copy
Range("D12").PasteSpecial
Range("D12").NumberFormat = "[$-F400]h:mm:ss AM/PM"
'DEPARTURE
Range("C9").Copy
Range("E12").PasteSpecial
Range("E12").NumberFormat = "[$-F400]h:mm:ss AM/PM"
'CALCULATE
Range("E12").Copy
Range("F12").PasteSpecial
Range("F12") = Range("E12").Value - Range("D12").Value
Range("C12:I12").Font.Size = 12
和voter
的表。 log_vote
包含选民的数据,而Voter
包含已投票的选民的数据。
现在我试图向那些没有投票的选民显示。我已尝试在两个表中使用JOIN,但它会失败,因为JOIN子句只显示当然投票的选民。
这是我尝试过的代码段:
log_vote
如何只展示没有投票的选民?使用JOIN正确的方法吗?在此先感谢,我真的很感激你的答案!
*注意:我使用的是PHP技术。想知道PHP是否可以解决我的问题。
答案 0 :(得分:1)
我认为最直接的方法是not exists
:
select v.*
from voter v
where not exists (select 1 from log_vote lv where lv.nim = v.nim);
如果您想使用join
,则相应的版本为left join
:
select v.*
from voter v left join
log_vote lv
on lv.nim = v.nim
where lv.nim is null;
答案 1 :(得分:1)
这可以通过LEFT JOIN来完成,这样连接条件就不会过滤那些不回答它的人,然后你过滤掉那些没有匹配的人:
SELECT voter.* FROM voter
LEFT JOIN log_vote ON log_vote.nim = voter.nim
WHERE log_vote.nim is null
答案 2 :(得分:1)
你也可以这样做..
SELECT * FROM voter LEFT JOIN log_vote ON log_vote.nim = voter.nim
WHERE log_vote.nim IS NULL
答案 3 :(得分:1)
你可以使用
不在
这段代码应该有效!
SELECT * FROM voter v WHERE v.nim NOT IN(SELECT lv.nim FROM log_vote lv)
你应该提供关于每个表的属性的更多信息你确定它们在每个表中都有nim属性吗?