【发布时间】:2022-01-19 18:01:20
【问题描述】:
CREATE TABLE tree (
`id` INTEGER,
`p_id` VARCHAR(4)
);
INSERT INTO tree
(`id`, `p_id`)
VALUES
('1', null),
('2', '1'),
('3', '1'),
('4', '2'),
('5', '2');
CREATE TABLE Result (
`id` INTEGER,
`Type` VARCHAR(5)
);
INSERT INTO Result
(`id`, `Type`)
VALUES
('1', 'Root'),
('2', 'Inner'),
('3', 'Leaf'),
('4', 'Leaf'),
('5', 'Leaf');
SELECT
id
,CASE
WHEN p_id is NULL THEN 'Root'
WHEN id IN (
SELECT p_id
FROM tree)
THEN 'INNER'
WHEN id NOT IN(
SELECT p_id
FROM tree)
THEN 'LEAF'
END AS Type
FROM tree
返回
id Type
1 Root
2 INNER
3 null
4 null
5 null
优先退货
1 Root
2 INNER
3 LEAF
4 LEAF
5 LEAF
我也能得到任何建议,哪个函数可以与 MySQL 函数中的 case 函数一起使用
【问题讨论】:
-
SELECT id ,CASE WHEN p_id 为 NULL THEN 'Root' WHEN id IN (SELECT p_id FROM tree) THEN 'INNER' # WHEN id NOT IN(# SELECT p_id # FROM tree) # THEN 'LEAF ' ELSE 'lEAF' END AS Type FROM tree
-
我已经搭建好了模板测试平台,你可以看看db-fiddle.com/f/bv7cf7TdJs71aTsjsgHorp/0
-
为什么是
p_idVARCHAR而不是INTEGER? -
Result表和这个问题有什么关系? -
p_id 是 parent_id ,后面可能是 sting 类型所以设置在 varchar 中,结果是测试用例的欲望表