嗨,我有这种情况
我的桌子
create table foo(
id int,
num int1,
stage enum('a','b','c'),
unique(id,stage)
);
这是数据的片段
INSERT INTO `foo` (`id`, `num`, `stage`) VALUES
(1, 1, 'a'),
(1, 2, 'b'),
(1, 3, 'c'),
(2, 1, 'a'),
(2, 2, 'b'),
(2, 3, 'c'),
(3, 1, 'a'),
(3, 2, 'b'),
(4, 1, 'a');
桌子上的注释
具有 c 状态的 id 必须具有 a,b 的先前状态触发没有问题
将此查询为
我使用 distinct 和标量相关子查询来做到这一点
SELECT DISTINCT
id, IFNULL((
SELECT num
FROM foo f
WHERE f.id = foo.id AND f.stage = 'a'),'') `a`, IFNULL((
SELECT num
FROM foo f
WHERE f.id = foo.id AND f.stage = 'b'),'') `b`, IFNULL((
SELECT num
FROM foo f
WHERE f.id = foo.id AND f.stage = 'c'),'') `c`
FROM foo
[底线] 我想要一个更好的系紧来做到这一点
谢谢