gpt4 book ai didi

mysql - 如何加入需要重复的地方?

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:02 26 4
gpt4 key购买 nike

我有一个这样的表结构

表1

PersonID, referrer

表2

Event_A_ID, PersonID, status

表3

Event_B_ID, PersonID, status

我想通过连接所有事件表(如 Event_A...K)并检查 PersonID,从表 1 中使用 referrer=X 获取每个人的事件状态.由于人们可以出现在多个事件中,我们可以有这样的情况

PersonID=1001, EventA_ID, referrer=X, status
PersonID=1001, EventB_ID, referrer=X, status
PersonID=1001, EventK_ID, referrer=X, status
PersonID=1002, ...
PersonID=1003, ...

但我不确定如何加入所有事件表,因为 ID 可能重复(而且是需要的)。

我尝试单独选择并使用 in 语法

...
WHERE 1=1
AND PersonID IN (SELECT PersonID from table1 where referrer=X)

但后来我意识到之前的一切都是事件的集合。

我应该从表 1 中的 SELECT 开始吗?先选择有效ID,然后从事件中选择?如果是这样,我该如何加入?我觉得理想看起来像所有事件表的联合,然后选择

最佳答案

您可以使用 union all 来按行实现数据,或者如果没有太多表事件,您也可以在表之间使用内部联接。这将以列格式表示数据。

SELECT * FROM tb2 AS t2 INNER JOIN tb3 t3 ON t2.personId = t3.personId INNER JOIN tb1 t1 ON t1.personId = t2.personId WHERE t1.refer='refer1'

根据您要加入的表的数量,还可以有许多其他方法。

您还应该考虑在您的数据库表之间使用更好的关系,因为您当前的场景将导致您拥有与您拥有的事件一样多的表。这会导致检索多个事件的数据变慢。

关于mysql - 如何加入需要重复的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55096773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com