0
我想做到這一點:選擇帶有IN
SELECT
CASE WHEN var in (SELECT var FROM var_table) THEN 'var1'
ELSE 'var2'
END AS myvar
但抱怨這一點。我該如何避免必須在查詢內部將var的整個列表粘貼到var_table中。順便說一句,這是Teradata。
謝謝!
我想做到這一點:選擇帶有IN
SELECT
CASE WHEN var in (SELECT var FROM var_table) THEN 'var1'
ELSE 'var2'
END AS myvar
但抱怨這一點。我該如何避免必須在查詢內部將var的整個列表粘貼到var_table中。順便說一句,這是Teradata。
謝謝!
你必須有一個很舊版本的Teradata作爲標量子查詢像這樣因爲TD13支持。
即使它們被支持,我總是會嘗試重寫它們(在任何DBMS中不僅僅是TD)。你的是一個隱藏的外部聯接(假設它是包含FROM的查詢的前幾行):
SELECT
CASE WHEN t1.var IS NOT NULL THEN 'var1' ELSE 'var2' END AS myvar
FROM t1 LEFT JOIN var_table AS t2
ON t1.var = t2.var
試試這個
SELECT
CASE WHEN var is null THEN 'var2'
ELSE 'var1'
END
from var_table
爲什麼downvote我能知道嗎? – Amit
這根本不會返回相同的結果。 – dnoeth
說我得到var =「你好」。 var_table中沒有「hello」。我希望這種情況是「var2」。我在你的代碼中沒有看到這將是怎麼回事? – elelias