Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
319 views
in Technique[技术] by (71.8m points)

sql - GROUP BY but get all values from other column

I''ll explain what I need to do on example. First of all, we have a simple table like this one, named table:

id | name
===+=====
1  | foo
1  | bar
1  | foobar
2  | foo
2  | bar
2  | foobar

Now the query:

SELECT t.* FROM table t GROUP BY t.id

Will get us result similar to this one:

id | name
===+=====
1  | foo
2  | foo

But is it possible, to collect all values of name to have result like this?

id | name
===+=================
1  | foo, bar, foobar
2  | foo, bar, foobar
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Using MySQL you can use GROUP_CONCAT(expr)

This function returns a string result with the concatenated non-NULL values from a group. It returns NULL if there are no non-NULL values. The full syntax is as follows:

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

Something like

SELECT ID, GROUP_CONCAT(name) GroupedName
FROM Table1
GROUP BY ID

SQL Fiddle DEMO


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...