我基本上是想完成以下任务:
MemberID | selection 1 | selection 2 | selection 3
-----------------------------------------------------------------------
12345 | A | |
12345 | | B |
12345 | | | C
转换为
MemberID | selection 1 | selection 2 | selection 3
-----------------------------------------------------------------------
12345 | A | B | C
我的一部分认为'UNION'是要走的路,但这通常是保留给我认为的行的列。
有什么想法吗?
答案 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 = ?