簡體   English   中英

sql條件條件作為從另一個表中的SELECT

[英]sql case condition as SELECT from another table

我有一個有條件的工作程序。 它在每個INSERT上觸發,並檢查一列中的特定值,然后更新另一列。 整個SP具有20-30個CASE條件。 我正在從MySQL遷移到PostgreSQL,想知道是否可以自動化它並在CASE中包含SELECT? (請參見下面的代碼)

SELECT col1,col2 FORM myCASEtbl
ABC | 1
DEF | 2
123 | 3

由此:

UPDATE myTable
SET columnName = CASE
WHEN OtherColumn LIKE '%ABC%' THEN columnName = 1
WHEN OtherColumn LIKE '%DEF%' THEN columnName = 2
WHEN OtherColumn LIKE '%123%' THEN columnName = 4
...
ELSE columnName
END
WHERE columnName IS NULL;

對此:

UPDATE myTable
SET columnName = CASE
SELECT 'WHEN OtherColumn LIKE ' + col1 + ' THEN columnName = ' + col2 FROM myCASEtbl
ELSE columnName
END 
WHERE columnName IS NULL

是的,您可以使用子查詢:

UPDATE myTable
    SET columnName = (SELECT ct.col2
                      FROM myCaseTable ct
                      WHERE mytable.OtherColumn like '%' || ct.col || '%'
                      LIMIT 1
                     )
    WHERE columnName IS NULL;

LIMIT是一種確保子查詢返回一行的便捷方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM