gpt4 book ai didi

mysql - 如何使用 if 语句从同一个表中选择和连接值

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

平日。

我正在尝试从 MySQL 5.1 数据库中以预先排序的格式检索数据:

id | name    | sub
-------------------
1 | cat 1 | 0
2 | cat 2 | 0
3 | cat 3 | 0
4 | sub 1 | 2

上面的'sub'列指的是同一个表的id,但是作为子类分组。我希望能够导出列表,仅当它是子类别时才使用 CONCAT()。

理想情况下,最终输出应该是这样的:

id | name
------------------
1 | cat 1
2 | cat 2
4 | cat 2 - sub 1
3 | cat 3

我的无力尝试使我想到了这个滑稽的问题,但无济于事:

SELECT c.id AS id,
(case when c.sub > 0 then CONCAT(ca.name, ' - ', c.name) AS name else c.name AS name)
FROM cat c
LEFT JOIN cat ca ON c.sub = ca.id
ORDER BY name ASC

任何帮助都会得到无可否认的感激和可能的 cookie 奖励。

最佳答案

这里需要的是LEFT JOIN 表自身来获取类别和子类别。 COALESCE() 返回连接值(如果没有匹配的子类别,则为 NULL)或连接值。

SELECT
s.id,
COALESCE(CONCAT(c.name, '-', s.name), s.name) AS catname
FROM
cats s
LEFT JOIN cats c ON s.sub = c.id
ORDER BY catname ASC

这是一个例子:http://sqlfiddle.com/#!2/201b1/8

关于mysql - 如何使用 if 语句从同一个表中选择和连接值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21922144/

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