
因此,我有一個名為dragon的表,有2列Pokemon和Power。我的結果表應該看起來像圖片中給出的那樣。我如何使用SQL來實作這個目標?我覺得使用Join是可以的。但我正在努力想出正確的思維程序。
uj5u.com熱心網友回復:
如果你想要的是結果作為視圖
SELECT。
D.寵物小精靈。
CASE WHEN D. Power IS NOT NULL THEN D。 權力 ELSE D1.權力 END
FROM Dragon D
LEFT JOIN
(
SELECTMAX(Power) Power
FROM Dragon
WHERE Power IS NOT NULLGROUP BY Pokemon) D1
ON D.Pokemon = D1.Pokemon
你也可以使用類似的查詢來更新現有的表,如下所示
UPDATE D
SET D.power= D1.power
FROM Dragon D
LEFT JOIN
(
SELECTMAX(Power) Power
FROM Dragon
WHERE Power IS NOT NULLGROUP BY Pokemon) D1
ON D.Pokemon = D1.Pokemon
WHERE D.PowerIS NULL
uj5u.com熱心網友回復:
你可以使用一個視窗函式:
select d。 *。max(power) over (partition by pokemon) as impputed_power
from dragon d;
如果你想實際修改資料,那么在標準SQL中,你可以使用一個相關的子查詢:
update dragon
set power = (select max(d2. power) from dragon d2 where d2.pokemon = d.pokemon)
where power is null;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/311797.html
標籤:
