SQL使用排除条件加入两个表?

时间:2015-03-14 19:55:46

标签: sql join

我有一个我想解决的SQL问题。以下是问题:

给定以下两个表写一个返回的SQL查询 排名前10000的分数,不包括具有任何= 3事件的uuids 过去30天。

TABLE scores (
  uuid INT,
  score FLOAT
)
TABLE events (
  when date,
  uuid INT, 
  what INT
)

我试图通过将问题分成两个语句然后加入它来以这种方式解决它,

对于语句:返回前10000个得分的SQL查询,我得到了,

SELECT TOP 10000 score FROM scores;

对于声明:在过去30天内具有任何= 3个事件的uuids。

SELECT uuid FROM events WHERE what=3 AND when>2/14/2015;

通过根据排除条件加入两个陈述,我得到了,

SELECT TOP 10000 score
WHERE what!=3 AND when>2/14/2015
FROM scores
INNER JOIN events
ON score.uuid=events.uuid;

但我不确定这是否正确,我觉得我在这里遗漏了一些像“排除”的特定语法,而且我也不确定我是否以正确的方式执行了Join操作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

试试这个

select top 10000 score
from scores
where not exists(
     select 1 
     from events
     where scores.uuid = events.uuid
     and events.when > 20150214 
     and what=3 
    )