gpt4 book ai didi

mysql - 使用单个查询将 id 替换为名称

转载 作者:行者123 更新时间:2023-11-29 21:22:04 24 4
gpt4 key购买 nike

SELECT team_with.participant1,team_with.participant2,team_with.participant3 
FROM event,team_with
WHERE team_with.for_event_no=event.event_no AND
event.event_no=4 AND
team_with.participant1=9 OR
team_with.participant2=9 OR
team_with.participant3=9;

我已经编写了特定的查询,并连续获得了所需的 id。我无法修改此查询,以便显示连接到 id 的名称来代替这些 id。

student_detatil 表由 PK(sam_id) 和属性 name 组成。

当前查询显示的 ID 是连接到 student_detail.sam_id. 的 FK。

最佳答案

增加存储不同参与者的列似乎是一个糟糕的设计。考虑为每个参与者创建一个单独的行并将它们存储在表中。您的加入逻辑也会更容易。

此外,请使用显式的 JOIN 语法 - 通过将连接逻辑与数据检索条件分开,使查询更清晰、更容易理解。

请记住,运算符 AND 优先于 OR,因此您的 event.event_no = 4 不会应用于每个参与者条件。我相信这是一个错误,但你应该做出判断。

对于查询本身,您可以将OR条件应用于连接,或者简单地连接student_detail表三次。

SELECT 
s1.name,
s2.name,
s3.name
FROM
event e
INNER JOIN team_with t ON t.for_event_no = e.event_no
LEFT JOIN student_detail s1 ON s1.sam_id = t.participant1
LEFT JOIN student_detail s2 ON s2.sam_id = t.participant2
LEFT JOIN student_detail s3 ON s3.sam_id = t.participant3
WHERE
e.event_no = 4
AND ( t.participant1=9 OR t.participant2=9 OR t.participant3=9 );

关于mysql - 使用单个查询将 id 替换为名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35676595/

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