MySQL:将不同的值连接为单个值

标签 mysql sql

在 mysql 数据库表中,我有与域表具有一对多关系的项目,例如

项目

----------------
proId | domainId
----------------
  1        1
  1        2
  2        1
  3        3

---------------------
domainId | domainName
---------------------
    1        Web
    2        Mobile
    3        iPhone

我查询

SELECT p.*, d.* FROM projects p LEFT JOIN domain d ON p.domainId = d.domainId

结果

结果

-----------------------------
proId | domainId | domainName
-----------------------------
  1       1          Web
  1       2          Mobile
  2       1          Web
  3       3          iPhone

但是是否可以将所有域显示为单个值并连接起来,例如

-----------------------------
proId | domainId | domainName
-----------------------------
  1       1, 2    Web, Mobile
  2       1       Web
  3       3       iPhone

最佳答案

可能您正在寻找 GROUP_CONCAT 功能。

SELECT  a.proID,
        GROUP_CONCAT(b.domainID) domainId,
        GROUP_CONCAT(b.domainName) domainName
FROM    projects a
        LEFT JOIN domain b
            ON a.domainID = b.domainID
GROUP BY a.proID

SQLFiddle Demo

关于MySQL:将不同的值连接为单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481555/

相关文章:

sql - 在 SQL 中计算年龄

c# - Oracle 更新表中的重复行

php - 配置mysql数据库保存进度

mysql - MySQL 中的 CHECK 约束不起作用

mysql - 从 v4.0.0 开始需要显式提供方言/建议的修复不起作用

sql - GROUP BY PostgreSQL 查询,我需要一个不在 GROUP BY 子句中的列

SQL 选择语句

mysql - 根据 IN 条件应用 mysql 限制

mySQL选择不同数据库中两个表之间的差异

PHP使2个不同的数据库表行相互对应