gpt4 book ai didi

mysql - 加入以提供具有可选关系列的列表

转载 作者:行者123 更新时间:2023-11-29 15:07:13 24 4
gpt4 key购买 nike

表格:

        users: id INT

items: id INT
setid INT

sets: id INT

relationships: userid INT
itemid INT
relationship ENUM('owner', 'participant')

给定一个userid和一个setid,我们需要生成集合中所有项目的列表,以及用户与每个项目的关系(如果存在关系) 。即结果将是

setid    itemid   relationship
---------------------------------
1 1 NULL
1 2 owner
....

以下内容不起作用,因为第二个 where 子句消除了 relationship 为 null 的行:

select
sets.id as setid,
items.id as itemid,
relatonships.relationship as relationship

from sets
inner join items on sets.id = items.setid
left join relationships on relationships.itemid = items.id

where
sets.id = 5
and relationships.userid = 27

但是,第二个 where 子句会消除该项目与给定用户之间不存在关系的行。如何通过单个查询来完成此操作?

最佳答案

这非常简单,我不明白你可以在“join ... on”子句中测试常量:

select
sets.setid,
items.itemid,
relationships.relationship

from sets
inner join items on items.setid = sets.id
left join relationships
on relationships.itemid = items.id
and relationships.userid = 5
where
sets.id = 1

关于mysql - 加入以提供具有可选关系列的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739428/

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