gpt4 book ai didi

MySQL SELECT - 切换行与列

转载 作者:行者123 更新时间:2023-11-30 00:30:22 24 4
gpt4 key购买 nike

对于标题缺乏解释,我深表歉意,因为我不知道该怎么称呼我正在尝试做的事情,如果您知道我在寻找什么,请修改。

这是我当前的表格:

prodID | seller  |  price
123 seller1 5000
123 seller2 3000
123 seller3 5500
123 seller4 3500
500 seller2 55
500 seller5 60
200 seller1 35
200 seller2 25
200 seller3 35

现在我想对上面的 prodID 进行GROUP BY 并将每一列列为卖家价格,该价格可能为NULL,即:

prodID  | seller1 | seller2 | seller3 | seller4 | seller5
123 5000 3000 5500 3500 null
500 null 55 null null 60
200 35 25 35 null null

我不知道有多少个独特的卖家,所以将它们视为动态的而不是固定的。

我认为我不需要我一直在研究的数据透视表,但如果错误,请纠正我。我还尝试过使用 UNION 并组契约(Contract)一个表,但这似乎效率低下,因为我不知道有多少卖家以及他们的名字是什么:

效率低下:

SELECT 
MT.prodID, MT.price, CT.price
from
`table` MT,
`table` CT
WHERE
MT.prodID = CT.prodID
AND MT.seller != CT.seller
GROUP BY MT.prodID

最佳答案

好吧,如果你不想做一个数据透视表并且不能用另一种编程语言来做到这一点(这将是最好的选择)......你可以做的就是这个。

SELECT 
t.prodID,
t1.seller1,
t.seller2,
t2.seller3,
t3.seller4,
t4.seller5
FROM
(
SELECT
m1.prodID, m1.price AS seller2
FROM myTable AS m1
WHERE m1.seller LIKE "seller2"
) AS t

LEFT JOIN
(
SELECT
m.prodID,
m.price AS seller1
FROM myTable AS m
WHERE m.seller LIKE "seller1"
) AS t1 ON t.prodID = t1.prodID

LEFT JOIN
(
SELECT
m2.prodID,
m2.price AS seller3
FROM myTable AS m2
WHERE m2.seller LIKE "seller3"
) AS t2 ON t2.prodID = t.prodID

LEFT JOIN
(
SELECT
m3.prodID,
m3.price AS seller4
FROM myTable AS m3
WHERE m3.seller LIKE "seller4"
) AS t3 ON t3.prodID = t.prodID

LEFT JOIN
(
SELECT
m4.prodID,
m4.price AS seller5
FROM myTable AS m4
WHERE m4.seller LIKE "seller5"
) AS t4 ON t4.prodID = t.prodID

这是一种有点古怪的方法,但它会根据您的请求转置您的数据。查看 sql fiddle 的结果... http://sqlfiddle.com/#!2/55f59/45

关于MySQL SELECT - 切换行与列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22562317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com