我可以将一个表行的结果组合成一行(带列)吗?

时间:2011-02-10 20:20:37

标签: php mysql rows

我基本上是想完成以下任务:

表1:

MemberID   |    selection 1     |    selection 2     |     selection 3
-----------------------------------------------------------------------
12345      |        A           |                    |                 
12345      |                    |       B            |                   
12345      |                    |                    |          C

转换为

表2:

MemberID   |    selection 1     |    selection 2     |     selection 3
-----------------------------------------------------------------------
12345      |        A           |       B            |        C        

我的一部分认为'UNION'是要走的路,但这通常是保留给我认为的行的列。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我的第一个想法是聚合技巧。没有数据的列是NULL还是空白?也许值排在空白列的上方或下方。在那种情况下:

SELECT MAX(column1),MAX(column2),MAX(column3)FROM表GROUP BY MemberID;

答案 1 :(得分:1)

我在想你正试图在一张桌子上承担两项责任。怎么样

表1,成员

id

表2,选择

id
member_id
selection

数据看起来像这样:

表1(成员)

id
----
12345

表2(选择)

id    member_id    selection
--------------------------------
1     12345        a
2     12345        b
3     12345        c

然后你会通过

获得所有选择,每行一个
SELECT members.id,
       selections.selection
FROM   members
JOIN   selections
ON     members.id = selections.member_id

或者您只想要选择一个成员

SELECT member_id AS id,
       selection
FROM   selections
WHERE  member_id = ?