我需要根據本地表(每天更新)是否為空,向全域表插入數值。所以我嘗試了這段代碼,如果我用實際值替換第二個SELECT陳述句,它完全可以作業,但這些值每天都會變化,所以我真的需要找到一些解決方法。
DO
'
BEGIN
如果((SELECT count(*) FROM crit_crashes) > 0) THEN
INSERT INTO usr_wrk.crit_crashes (sd, title, business_line, start_dttm, end_dttm, category, date_opened) VALUES (SELECT * FROM crit_crashes) 。
否則
INSERT INTO usr_rk.crit_crashes (sd, title, business_line, start_dttm, end_dttm, category, date_opened) VALUES (NULL, NULL, NULL, NULL, NULL, current_date);
結束IF。
結束。
'
uj5u.com熱心網友回復:
不需要PL/pgSQL或IF陳述句。你可以使用一個至少回傳一條記錄的SELECT陳述句:
INSERT INTO usr_wrk.crit_crashes (sd, title, business_line, start_dttm, end_dttm, category, date_opened)
SELECT sd, title, business_line, start_dttm, end_dttm, category, date_opened
FROM crit_crashes
UNION ALL UNION?
SELECT NULL,NULL,NULL。NULL, NULL, NULL, current_date.
WHERE NOT EXISTS (select * from crit_crahes)。)
如果crit_crashes中沒有記錄,那么UNION的第一部分將不會回傳任何東西,第二部分將回傳一條記錄。如果表中有記錄,第二部分將不會回傳任何東西,所以只有來自crit_crashes的記錄被插入。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/332506.html
標籤:
上一篇:在postgresql中究竟如何操作altertable?
下一篇:做作業的AWS服務
