获取基于重复id(s)的所有值 - mysql

时间:2013-10-12 22:25:27

标签: mysql

感谢您的帮助,我坚持这个问题。 让我解释一下,我有这种表,表1和表2。

表1

-------|
id     |
-------|
100    | 
101    | 
102    | 
103    | 
104    | 
105    |

表2

-------|---------|
id     |value    |
-------|---------|
100    |  A      |
100    |  B      |
100    |  C      |
101    |  D      |
105    |  E      |
105    |  F      |

期望的结果:

-------|---------
id     |value    
-------|---------
100    |  A   B   C    
101    |  D 
102    |
103    |
104    |
105    |  E   F    

2 个答案:

答案 0 :(得分:2)

SELECT table1.id, 
GROUP_CONCAT(table2.value ORDER BY value ASC SEPARATOR ' ') value
FROM table1 
LEFT JOIN table2 ON table2.id = table1.id
GROUP BY table1.id

结果如下:

 id     value
--------------
100     A B C
101     D
102     NULL
103     NULL
104     NULL
105     E F

如果要删除NULL值


SELECT 
  table1.id,
  GROUP_CONCAT(
    COALESCE(table2.value, '') 
    ORDER BY VALUE ASC SEPARATOR ' '
  ) VALUE 
FROM
  table1 
  LEFT JOIN table2 
    ON table2.id = table1.id 
GROUP BY table1.id 

最终结果:

 id     value
--------------
100     A B C
101     D
102     
103     
104     
105     E F

答案 1 :(得分:1)

您应该可以使用GROUP_CONCAT

执行此操作
SELECT table2.id, GROUP_CONCAT(table2.value ORDER BY value ASC SEPARATOR ' ') value
FROM table2 
LEFT JOIN table1 ON table1.id = table2.id
GROUP BY table1.id