mysql - 实现 Mysql 连接。如何获得同一行的结果?

标签 mysql join

Er 图链接:

我想从子表中获取数据。 例如。我需要所有 user_id 的位置、设备、语言、服务。对于给定的 user_id,位置、设备、语言和服务有多个值。

我尝试了以下代码:

SELECT  user_detail.user_id , user_detail.name , user_equipment.equipment , user_location.location , user_service.service , user_language.language
          from user_detail
    INNER JOIN user_equipment on user_detail.user_id = user_equipment.user_id
    INNER JOIN  user_location on user_detail.user_id = user_location.user_id
    INNER JOIN user_service on user_detail.user_id = user_service.user_id
    INNER JOIN user_language on user_detail.user_id = user_language.user_id;

现在的问题是,如果 user_id 有三个位置,我得到三行,有什么方法可以让所有位置都在同一行中?

最佳答案

您正在寻找此“GROUP_CONCAT”,您的查询将如下所示:

SELECT  user_detail.user_id ,
    user_detail.name,
    GROUP_CONCAT(user_equipment.equipment SEPARATOR ',') as equipments,
    GROUP_CONCAT(user_location.location SEPARATOR  ',') as locations,
    GROUP_CONCAT(user_service.service SEPARATOR ',') as services,     
    GROUP_CONCAT(user_language.language SEPARATOR ',') as languages
FROM user_detail
    INNER JOIN user_equipment on user_detail.user_id = user_equipment.user_id
    INNER JOIN  user_location on user_detail.user_id = user_location.user_id
    INNER JOIN user_service on user_detail.user_id = user_service.user_id
    INNER JOIN user_language on user_detail.user_id = user_language.user_id;
GROUP BY user_detail.user_id

关于mysql - 实现 Mysql 连接。如何获得同一行的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32757681/

相关文章:

mysql - SQL多次返回相同的结果

mysql - SQL 检索 sql 查询中的最后一条记录

mysql - Zend_Db_Table、JOIN 和 mysql 表达式在一个查询中?

python - 交叉连接/合并 dataframe1 以根据 dataframe1 中的列创建组合的 dataframe2

php - 从 "users"表获取有关我的好友的用户的信息。关系/连接 SQL 表?

MySQL 子选择多个条件

mysql - 使用别名优化 Select 子查询

JPA什么时候使用实体类型的Path而不是Join?

sql - SQL Server 2012 Express 中的另一个 LEFT OUTER JOIN 失败

mysql - 如何始终返回子查询结果?