2013-12-11 10 views
5

मैं चारों ओर एक जवाब के लिए खोज की है और यह निश्चित लगता है, लेकिन मैं समझ रहा स्टैक ओवरफ़्लो समुदाय के साथ दोबारा जांच होगी:
यहाँ मैं क्या करने की कोशिश कर रहा हूँ है:INSERT INTO ... एकाधिक स्तंभों लौटाना (PostgreSQL)

INSERT INTO my_table VALUES (a, b, c) 
RETURNING (SELECT x, y, z FROM x_table, y_table, z_table 
WHERE xid = a AND yid = b AND zid = c) 

मुझे एक त्रुटि मिलती है कि मैं एक से अधिक कॉलम वापस नहीं कर सकता।
यह काम करता है अगर मैं इसे SELECT x FROM x_table WHERE xid = a बताता हूं।

क्या यह अलग-अलग SELECT क्वेरी बनाने के विरोध में एक ही प्रश्न में संभव है?

मैं PostgreSQL 8.3 का उपयोग कर रहा हूं।

उत्तर

4

@corvinusz उत्तर 8.3 के लिए गलत था, लेकिन मुझे एक अच्छा विचार दिया कि बहुत धन्यवाद!

INSERT INTO my_table VALUES (a, b, c) 
RETURNING (SELECT x FROM x_table WHERE xid = a), 
    (SELECT y FROM y_table WHERE yid = b), 
    (SELECT z FROM z_table WHERE zid = c) 

मुझे नहीं पता कि सवाल में जिस तरह से बताया गया है वह अमान्य है लेकिन कम से कम यह काम करता है।

9

इसे आजमाएं।

with aaa as (
    INSERT INTO my_table VALUES(a, b, c) 
    RETURNING a, b, c) 
SELECT x, y, z FROM x_table, y_table, z_table 
WHERE xid = (select a from aaa) 
    AND yid = (select b from aaa) 
    AND zid = (select c from aaa); 

9.3 इसी तरह की क्वेरी काम करता है।

+0

कोई अच्छा नहीं। जैसे मैंने उल्लेख किया, 8.3 का उपयोग कर। – itchy23

संबंधित मुद्दे