gpt4 book ai didi

sql - 如何根据列值进行条件连接

转载 作者:行者123 更新时间:2023-12-04 13:45:42 24 4
gpt4 key购买 nike

我有一张 table :

Activities{ActivityId, ActivityTypeId, CreatedByUserId, ItemId, FollowId}
Items{ItemId, Title}
Followings{FollowId, FollowerId, FollowingId}

ActivityItemIdFollowId可以为空(永远不能同时为空)。
现在我需要以某种方式基于或 ActivityTypeId或者如果 ItemId 之一或 FollowId如果为 null 则加入 Items表或 Followings table 。

这种条件查询怎么写?

ItemId为空 我需要加入 Followings table 。
ItemId不为空我需要加入 Items table 。

我也问过 ActivityTypeId因为检查事件类型可能更容易,并以此为基础连接到 Items 或 Follows 表。

最佳答案

以下每个将返回不同的结果。第一个将返回(事件和项目)和(事件和关注)之间的所有关系。第二个将返回(事件和项目)和(事件和关注)之间关系的每个组合。尝试它们,看看哪个最适合你。

(注意:我没有测试过这些 - 我是徒手写的 - 可能有语法错误)

SELECT  a.ActivityId, 
a.ActivityTypeId,
a.CreatedByUserId,
i.ItemId,
i.Title,
null as FollowId,
null as FollowerId,
null as FollowingId
FROM Activities a INNER JOIN Items i ON a.ItemId = i.ItemId
UNION ALL
SELECT a.ActivityId,
a.ActivityTypeId,
a.CreatedByUserId,
null as ItemId,
null as Title,
f.FollowId,
f.FollowerId,
f.FollowingId
FROM Activities a INNER JOIN Followings f ON a.FollowId = f.FollowId

或者:
SELECT  a.ActivityId, 
a.ActivityTypeId,
a.CreatedByUserId,
i.ItemId,
i.Title,
f.FollowId,
f.FollowerId,
f.FollowingId
FROM Activities a
LEFT OUTER JOIN Items i ON a.ItemId = i.ItemId
LEFT OUTER JOIN Followings f ON a.FollowId = f.FollowId

关于sql - 如何根据列值进行条件连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171845/

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