我有2個查詢如下:
// create temp table for the table with selected supplier IDENTITY
SELECT supplier_id, supplier_name
INTO TEMPORARY TABLE temp_supplier
FROM suppliers
WHERE supplier_id = 2;
// join contacts table with temp supplier TABLE
SELECT supplier_name, scontact_name, scontact_title
INTO TEMPORARY TABLE temp2
FROM temp_supplier
LEFT JOIN supplier_contacts ON supplier_contacts.supplier_id = temp_supplier.supplier_id ORDER BY scontact_id ASC;
本質上,我想保存查詢 1 的結果以用于其他查詢。現在我正在使用臨時表,但我很擔心,因為查詢一中的 WHERE 子句將與 Express JS 一起使用,因此它看起來類似于:
SELECT supplier_id, supplier_name
INTO TABLE temp_supplier
FROM suppliers
WHERE supplier_id = $1;
因此,如果該查詢必須多次運行,臨時表會發生什么情況?任何幫助都將不勝感激!
uj5u.com熱心網友回復:
您可以為查詢一創建一個函式而不是一個臨時表:
CREATE OR REPLACE FUNCTION query1 (INOUT supplier_id integer, OUT supplier_name text)
RETURNS setof record LANGUAGE sql AS
$$
SELECT s.supplier_id, s.supplier_name
FROM suppliers AS s
WHERE s.supplier_id = supplier_id ;
$$ ;
然后您可以在任何型別的查詢中呼叫函式 query1 :
SELECT supplier_name, scontact_name, scontact_title
INTO TABLE temp2
FROM query1(2) AS temp_supplier
LEFT JOIN supplier_contacts
ON supplier_contacts.supplier_id = temp_supplier.supplier_id
ORDER BY scontact_id ASC;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/440858.html
標籤:sql PostgreSQL 表示
