gpt4 book ai didi

MySQL 三个表之间的查询

转载 作者:行者123 更新时间:2023-11-29 06:27:58 24 4
gpt4 key购买 nike

我有三个表student,role,student-role(只有student id和role id)。我想通过检查学生姓名(在学生表中)来返回角色(在角色表中)。

我尝试过:

select role from role rr 
join student-role sr on sr.role-id=rr role-id
join student ss on sr.student-id=ss.student-id
where ss.name="xxx"

我的 table 是:

Role
Role-id | Role |
-------------+---------------+
1 | admin |
2 | whatever |


Student
Student-id | name |
-------------+---------------+
1 | aaaaaaaa |
2 | bbbbbbbb |

Studnet-role
id | Role-id |student-id |
-------------+---------------+--------------+
1 | 1 |2 |
2 | 2 |1 |

谁能告诉我这是否正确?

最佳答案

您的查询看起来是正确的。

我只需将其修改为以 student 开头,然后从那里加入其他表:

SELECT r.role
FROM student s
INNER JOIN `student-role` sr ON sr.`student-id` = s.`student-id`
INNER JOIN role r ON r.`role-id` = sr.`role-id`
WHERE (s.name = "xxx")

当然,如果一名学生拥有多个角色,您将通过此查询返回多行。您可能没有想到这一点。

顺便说一句,我建议不要在列名称中使用连字符 (-)。

编辑

我在 @Strawberry 评论之后的列名称中添加了反引号。当然,student-id 不是不带反引号的有效列名。

关于MySQL 三个表之间的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396693/

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