根据下表:
... | id | type | ...
... | 1 | 1 | ...
... | 1 | 2 | ...
... | 1 | 3 | ...
... | 1 | 4 | ...
... | 2 | 1 | ...
... | 2 | 2 | ...
... | 3 | 1 | ...
... | 3 | 3 | ...
... | 4 | 1 | ...
... | 5 | 4 | ...
我想写一个选择查询,将返回行,并将返回值从4改为3,如果(相同的id和类型3和4)存在。
注意,如果only type = '4'并且没有(相同id & type = '3')存在,则结果将不会被修改。
示例查询无法工作,因为它无法检查上层条件:
SELECT id,CASE WHEN(type = '4')THEN '3' ELSE type end AS type FROM表;
我期望的输出是:
... | id | type | ...
... | 1 | 1 | ...
... | 1 | 2 | ...
... | 1 | 3 | ...
... | 1 | 3* | ...
... | 2 | 1 | ...
... | 2 | 2 | ...
... | 3 | 1 | ...
... | 3 | 3 | ...
... | 4 | 1 | ...
... | 5 | 4 | ...
2条答案
按热度按时间7vhp5slm1#
要更新:
要选择:
sczxawaw2#
我有一个,这是很多步骤,但至少是工作。你可以自己简单化。