gpt4 book ai didi

mysql - 一个查询获得一个 "cell"的多个结果,我想将它们分布在多列而不是一列上

转载 作者:行者123 更新时间:2023-11-29 06:58:32 25 4
gpt4 key购买 nike

这是我正在使用的查询

SELECT 
t1.name AS product_name,
t1.description AS product_description,
(SELECT t2.name from table2 order by name ASC LIMIT 1
OFFSET 1) AS product_category,
(SELECT t2.name from table2 order by name ASC LIMIT 1
OFFSET 2) AS product_category2,
(SELECT t2.name from table2 order by name ASC LIMIT 1
OFFSET 3) AS product_category3
FROM table1 t1 INNER JOIN
table3 t3
ON t3.product_id = t1.product_id INNER JOIN
table2 t2
ON t2.category_id = t3.category_id
;

我正在使用的表格包含以下信息:

table1: product_id, name, description

table2: category_id, name, description

table3: product_id, category_id

我得到了这个结果

    name  -   description   -  category

NAME 1 - Description 1 - Category 1


NAME 2 - Description 2 - Category 1

我的目标是以下结果:

    name  -   description   -  product_category -category2 - category3

NAME 1 - Description 1 - Cat1 - Cat2 - Cat5
NAME 2 - Description 2 - Cat7 - Cat9 - Cat11

最佳答案

我希望看到一些实际数据,但您的查询中值得注意的一件事是您在 GROUP BY 子句中包含了 product_id。我认为它不属于那里,你也不应该需要它。相反,只需按名称和描述进行分组即可。

SELECT
t1.name AS product_name,
t1.description AS product_description,
GROUP_CONCAT(t2.name) AS product_category
FROM table1 t1
INNER JOIN table3 t3
ON t3.product_id = t1.product_id
INNER JOIN table2 t2
ON t2.category_id = t3.category_id
GROUP BY
t1.name,
t1.description;

对于为什么您最初得到单行的一个解释是 product_id 充当 table1 中的主键。在这种情况下,您实际上是在告诉 MySQL 对各个记录进行分组。这意味着 GROUP_CONCAT() 只会作用于单个记录,从而产生当前的输出。

关于mysql - 一个查询获得一个 "cell"的多个结果,我想将它们分布在多列而不是一列上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44623125/

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