我正在開發一個新專案,并嘗試更新單列中的多行。使用 CASE 語法的任何查詢似乎都會引發錯誤。我需要重寫此查詢,以便不使用 CASE 語法。感謝您提供任何幫助,我有:
UPDATE tableA
SET
column_a = CASE WHEN column_a = 'conserve' THEN 'fixed'
WHEN column_a = 'balance' THEN 'moderate'
WHEN column_a = 'balance growth' THEN 'moderate growth'
WHEN column_a = 'aggressive' THEN 'moderate/agressive'
END;
我在我們的管道中看到的錯誤是:
Caused by: liquibase.exception.DatabaseException: ERROR: syntax at or near "column_a"
在更新單列中的多行時,我正在尋找使用 CASE 的替代方法。
uj5u.com熱心網友回復:
不確定不使用 CASE 的原因(因為它是一個更有用的選項),但這里的 dbfiddle有幾個 UPDATE 陳述句(REPLACE 和 CTE)的替代方案:
-- replace example
UPDATE tableA
SET
column_a = REPLACE(REPLACE(REPLACE
(column_a, 'conserve', 'fixed'),
'balance', 'moderate'),
'aggressive','moderate/agressive');
-- CTE example
UPDATE tableA
SET
column_a = tmp.tmp_val
FROM (
SELECT 'conserve' as tmp_key, 'fixed' as tmp_val
union select 'balance', 'moderate'
union select 'balance growth', 'moderate growth'
union select 'aggressive', 'moderate/agressive'
) tmp
WHERE tmp.tmp_key = tableA.column_a
;
uj5u.com熱心網友回復:
我會這樣寫這個查詢。這不是很重要,但應該完成作業。
UPDATE tableA
SET column_a = REPLACE(column_a, 'conserve', 'fixed'),
column_a = REPLACE(column_a, 'balance', 'moderate'),
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/476012.html
標籤:sql PostgreSQL sql更新
