我处理多个表中的数据,这些表由每个人的唯一标识符链接。
让我们说一个名为Eventstab的表包含一个ID列表,每次事件发生在该ID时,它都会列出该ID旁边的事件。我们打电话给事件"买了一个马铃薯","从椅子上掉下来","看了一部电影"。
所以Eventstab看起来像
ID | Event
----------------------
200 | fell off a chair
200 | bought potato
200 | fell off a chair
500 | bought potato
所以,正如你所看到的 - 身份200从椅子上掉下来,500没有。
此Eventstab包含主数据中的ID的SUBSET数据。我们可以得出结论,如果一个ID出现在主要数据中,而不是出现在Eventstab中,那么他们就永远不会从椅子上掉下来。
可以使用以下查询恢复上述信息:
SELECT id, event
FROM thedatums
JOIN Eventstab ON id
WHERE ...
我有兴趣为数据集中的每个人找到他们是否曾经从椅子上掉下来。 I.E是否事件='从椅子上掉下来'该ID。
更具体地说,我喜欢变量我会打电话给#a; is_a_dimwit'如果id EVER有一个从椅子上掉下来的记录,则该等于1'在Eventstab中,否则为0。
所以在我的脑海中
SELECT
id,
CASE
WHEN event = 'fell off chair' THEN 1
ELSE 0
END AS 'is_a_dimwit'
FROM
thedatums
JOIN
Eventstab ON id
编辑:有记录显示多个'从椅子上掉下来重复ID'
但是,我希望每个ID在我的数据集中都是唯一的,而且这个' is_a_dimwit'变量来衡量这个人是否从我拥有的数据中掉了一把椅子。
我的问题有两个:我怎么去谷歌搜索一个可能的答案呢?更好的是,你会如何解决它?
答案 0 :(得分:2)
听起来你想要这样的东西:
select i.id,
(case when exists (select 1 from thedatums where td.id = i.id and td.event = 'fell off chair')
then 1
when exists (select 1 from some_data where td.id = i.id and td.event = 'fell off chair')
then 1
else 0
end) as is_a_dimwit
from ((select id from thedatums)
union -- on purpose to remove duplicates
(select id from some_data)
) i;