Mysql 如何使用if语句从同一个表中选择和合并值
平躺在办公桌上 我试图在MySQL 5.1数据库中以预先排序的格式从以下数据库中检索数据:Mysql 如何使用if语句从同一个表中选择和合并值,mysql,if-statement,concat,Mysql,If Statement,Concat,平躺在办公桌上 我试图在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 ------------
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
任何帮助都会得到不可否认的感谢,并可能得到cookies。这里需要的是
左键连接表本身,以获得类别和子类别。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
这里有一个例子:请注意,按照惯例,我们倾向于使用NULL,而不是0来表示孤儿非常感谢!几个小时来我一直在想这个@Dr34k不客气,很乐意帮忙。欢迎来到堆栈溢出。