[英]Select all rows from joined table as colums
嗨我在從數據庫表中選擇行時遇到問題。
表A.
Id, name
表B.
Id, playingdate, points
表a和b與諸如a.id = b.id
類的鏈接相關聯
表a的數據
1, john
2, tim
表b的數據
1, 20170101, 3455
1, 20170108, 4532
2, 20170101, 5666
2, 20170108, 4768
所以我想回來
John, 3455, 4532
Tim, 5666, 4768
我如何建立sql選擇?
不知道為什么需要這個,因為積分可能很長:
SELECT A.name, group_concat(B.points)
FROM A
JOIN B ON A.id = B.id
GROUP BY A.name
如你還要求它在列中,那么它甚至很少使用。 但是,如果列固定為:name,20170101,20170108,則SQL將為:
SELECT
A.name,
ifnull(B1.points,0) AS '20170101',
ifnull(B2.points,0) AS '20170108'
FROM A
LEFT JOIN B AS B1 ON A.id = B1.id AND B1.playingdate = 20170101
LEFT JOIN B AS B2 ON A.id = B2.id AND B2.playingdate = 20170108
第一個group_concat和表A和B上的名稱連接:
SELECT concat(A.name, ',' , group_concat(B.points)) as name_points
FROM A
left outer join B ON A.id = B.id
GROUP BY A.id
SELECT A.name, group_concat(B.points) as points
FROM A
left outer join B ON A.id = B.id
GROUP BY A.id
以下是您查詢的可行解決方案....如果您有任何問題,請告訴我...
set @row1 := 0;
set @row2 := 0;
select a.id,a.name,c.p1,c.p2
from a
inner join
(
select b1.id,b1.p1,b2.p2
from
(
select @row1 := @row1 +1 as r1,b.id ,b.points as p1
from b
group by id
)b1
inner join
(
select @row2 := @row2 +1 as r2,b.points as p2
from b
)b2
on b1.r1+1 = b2.r2
)c on a.id = c.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.