[英]Get different query back based on a condition in PostgreSQL
我在使用 sql 時遇到了困難,這可能看起來很愚蠢,但它顯示了我想要實現的目標。
SELECT
CASE WHEN ( ( SELECT 1 FROM table_1 WHERE = condition ) IS NULL ) THEN
SELECT 'No result'::varchar
ELSE
SELECT
val_1,
val_2,
val_3
FROM
table_1
END;
在我的情況下,空答案不好,我不能只使用子查詢作為主要查詢。 即使我可以,如果兩個表不一樣,我仍然會留下這個問題:
SELECT
CASE WHEN ( ( SELECT 1 FROM table_1 WHERE = condition ) IS NULL ) THEN
SELECT 'No result'::varchar
ELSE
SELECT
val_1,
val_2,
val_3
FROM
table_2 --TABLE REPLACED!
END;
由於 CASE-WHEN 僅適用於一列,因此擁有 20 個具有相同條件的列將是可怕的。 任何幫助表示贊賞! 謝謝!
所以你想選擇 table_log 並且如果結果不是 NULL 將它顯示給客戶端,如果它是 NULL 顯示一條消息?
我創建了一個假表進行測試。 您正在尋找的是最后一個 SELECT 語句:
DROP TABLE IF EXISTS table_log;
CREATE TEMP TABLE table_log (
id INTEGER
,log_info VARCHAR)
;
INSERT INTO table_log VALUES
(1, 'test_entry')
;
ANALYZE table_log;
SELECT
COALESCE(b.log_info, 'No changes done!') AS log_info
FROM
(SELECT 'Fake-Data') a
LEFT OUTER JOIN (SELECT * FROM table_log WHERE id = 1) b ON (1=1);
如果給定的 id = 1,你會得到結果,如果它是別的東西(因為它不在測試表中),則給出預制消息。
這是db<>fiddle的鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.