【问题标题】:Query with GROUP_CONCAT not working使用 GROUP_CONCAT 的查询不起作用
【发布时间】:2011-12-12 06:30:14
【问题描述】:

我有 3 个表,结构如下:

**users**
id 
first_name
last_name


**specialties**
specialty_id
specialty_name


**user_specialties**
user_id
specialty_id

这里是一些示例数据:

**users**
1  Bill  Smith
2  Tom   Jones
3  Jill  Hayes


**specialties**
1  word
2  web
3  database

**user_specialties**
1  1
2  1
2  3
3  2
3  3

我需要查询数据,以便将专业连接在一行上,如下面的输出

**Desired Result**
Bill  Smith  word
Tom   Jones  word,database
Jill  Hayes  web,database

我正在使用以下查询

SELECT
users.first_name,
users.last_name,
GROUP_CONCAT(specialties.specialtyname)
FROM
users 
LEFT JOIN user_specialties ON user_specialties.user_id = users.userid
RIGHT JOIN specialties ON user_specialties.specialty_id = specialties.specialty_id

它不工作......

【问题讨论】:

    标签: mysql sql aggregate-functions group-concat


    【解决方案1】:

    您缺少GROUP BY 子句。很可能它应该是 GROUP BY users.id,它会在 JOIN 行之后。

    【讨论】:

      【解决方案2】:

      我刚刚测试了这个查询

      SELECT first_name,last_name,group_concat(specialty_name) 
      FROM user_specialties map 
      INNER JOIN specialties skill on user.id = map.user_id 
      INNER JOIN users user ON skill.specialty_id = map.specialty_id 
      GROUP BY user.id
      

      干杯! :-)

      【讨论】:

      • +1 表示工作示例,但 -1 表示非 ANSI 连接语法。所以,+0 :)
      • @Dan select first_name,last_name,group_concat(specialty_name) from user_specialties map INNER JOIN specialties Skill on user.id = map.user_id INNER JOIN users user ON Skill.specialty_id = map.specialty_id group by user。身份证
      猜你喜欢
      • 2012-07-28
      • 2014-12-26
      • 2021-01-18
      • 2012-10-24
      • 2014-03-09
      • 2014-08-18
      • 2013-05-13
      • 1970-01-01
      • 2016-11-02
      相关资源
      最近更新 更多