繁体   English   中英

SQL联接两个表的排除条件?

[英]SQL Join two tables with an excluding condition?

我有一个要解决的SQL问题。 下面是问题:

给定以下两个表,编写一个SQL查询,该查询将返回前10000个得分(不包括最近30天内发生任何what = 3事件的uuid)。

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

我试图通过将问题分为两个语句然后将其合并来解决此问题,

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

SELECT TOP 10000 score FROM scores;

对于语句:最近30天内发生任何what = 3事件的uuid。

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操作。 任何帮助,将不胜感激。

尝试这个

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 
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM