mysql用一个列值替换另一个列值
我试图从mysql数据库中提取学生和他们注册的课程。我想用输出中的课程名称替换课程id 我有以下表格和列: 表:mysql用一个列值替换另一个列值,mysql,Mysql,我试图从mysql数据库中提取学生和他们注册的课程。我想用输出中的课程名称替换课程id 我有以下表格和列: 表:用户到课程 列:users\u LOGIN和courses\u ID 表:用户 列:登录,姓名和姓氏 表:课程 列:id和name 这些表格在以下方面相互关联: users_to_courses.users_LOGIN = users.login users_to_courses.courses_ID = courses.id 我正试图获得姓氏、姓名、课程(按姓名而不是id)的输出
用户到课程
列:users\u LOGIN
和courses\u ID
表:用户
列:登录
,姓名
和姓氏
表:课程
列:id
和name
这些表格在以下方面相互关联:
users_to_courses.users_LOGIN = users.login
users_to_courses.courses_ID = courses.id
我正试图获得姓氏、姓名、课程(按姓名而不是id)的输出,所以它看起来像史密斯、约翰、化学、物理、作文
以下是我尝试失败的地方:
SELECT
users.surname,
users.name,
users.login,
users_to_courses.users_LOGIN,
(select group_concat (courses.name) from courses
where users_to_courses.users_LOGIN = users.login and users_to_courses.courses_ID =
courses.id
GROUP BY users.surname) as courses
from courses join users_to_courses
on courses.id = users_to_courses.courses_ID
试试这个
Select
u.surname,
u.name,
u.login,
uc.users_LOGIN,
c.Name,
--added this line
group_concat (c.name)
From users_to_courses uc
JOIN users u ON uc.users_LOGIN = u.login
JOIN courses c ON uc.courses_ID = c.id
-- added this line
GROUP BY u.surname, u.name, u.login, uc.users_LOGIN
还不完全清楚users_to_courses表是如何组织的,如果它是每行一个类的条目,那么您最终会得到每类一行,但是与相同用户ID对应的所有行在表中都是连续的
如果users_to_courses.courses_ID条目是多个课程ID的列表,这可能不起作用…这会产生此错误:#1146-表'gulllake_efront.login'不存在当我将c.CourseName更改为c.name时,此项起作用。我仍然希望所有课程都按姓氏分组。是否可以将组_concat添加到此查询?这给了我#1630-函数gulllake_efront.group_concat不存在。检查参考中的“函数名解析和解析”部分Manual@user1731399虽然我不认为这与答案有关,但我已经更新了我的答案,将
组的行中的courses.name
替换为c.name
,这也不起作用,但这提供了我需要的数据,即使它不是分组在一行中。
Select
u.surname,
u.name,
u.login,
uc.users_LOGIN,
c.Name,
--added this line
group_concat (c.name)
From users_to_courses uc
JOIN users u ON uc.users_LOGIN = u.login
JOIN courses c ON uc.courses_ID = c.id
-- added this line
GROUP BY u.surname, u.name, u.login, uc.users_LOGIN
SELECT users.login, users.surname, users.name, courses.name
FROM users_to_courses
INNER JOIN users ON users_to_courses.users_LOGIN = users.login
INNER JOIN courses ON users_to_courses.courses_ID = courses.id
GROUP BY users_to_courses.users_LOGIN