我有一个我想解决的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操作。任何帮助将不胜感激。
答案 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
)