gpt4 book ai didi

mysql - 如何获得相同的行值

转载 作者:行者123 更新时间:2023-11-29 00:29:03 27 4
gpt4 key购买 nike

我的sql表如下所示

表名

pack_id         pack_name
------- ---------
1 pack1
2 pack2
3 pack3

表名

items_id   pack_id  items_name        pack_name   
-------- ------- ---------- ---------
1 1 cat pack1
2 1 dog pack1
3 1 cow pack1
4 2 dog pack2
5 2 cow pack2
6 3 cat pack3

在 html 中我想显示像这样的包

Pack1       cat         dog       cow
pack2 dog cow
pack3 cat

先到这里

(items_name)cat = 1(items_id) ,

(items_name)dog = 2(items_id) ,

(items_name)cow = 3(items_id) 然后

(items_name)dog = 4(items_id) ,

(items_name)cow = 5(items_id) ans 也是

(items_name)cat = 6(items_id) 像这样

这里我点击cat表示对应的cat id存储在另一个表中。

最佳答案

您似乎想要可变数量的列,这实际上是不可能的。如果可能的列数量相当有限,也许可以这样做。

为了灵 active ,可能最好将项目名称放在结果的单个列中,以逗号分隔:-

SELECT a.pack_name, GROUP_CONCAT(b.items_name )
FROM package a
INNER JOIN items b
ON a.pack_id = b.pack_id
GROUP BY a.pack_id

如果你真的想要它们在列中并且只有有限数量的列那么你可以这样做:-

SELECT a.pack_name, MAX(Col0), MAX(Col1), MAX(Col2), MAX(Col3)
FROM package a
INNER JOIN
(
SELECT items_id, pack_id, IF(aSequence=0, items_name, NULL) AS Col0, IF(aSequence=1, items_name, NULL) AS Col1, IF(aSequence=2, items_name, NULL) AS Col2, IF(aSequence=3, items_name, NULL) AS Col3
FROM
(
SELECT items_id, pack_id, items_name, @sequence := IF(@prevpack = pack_id, @sequence + 1, 0) AS aSequence, @prevpack := pack_id
FROM
(
SELECT items_id, pack_id, items_name
FROM items
ORDER BY pack_id, items_id
) Sub1
CROSS JOIN (SELECT @sequence:=0, @prevpack:=0) Sub2
) Sub3
) b
ON a.pack_id = b.pack_id
GROUP BY a.pack_id

但这很难阅读或效率。这也会很痛苦,因为当最大列数增加时您需要修改它。

关于mysql - 如何获得相同的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17465874/

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