PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एक सामान्य तालिका अभिव्यक्ति में INSERT में उपयोग किए गए उप-चयन से डेटा लौटाएं

आपको अपने टेबल के नाम और उपनाम सही करने होंगे। साथ ही, दो तालिकाओं के बीच का कनेक्शन image कॉलम है (data नई तालिका में file_data ):

WITH inserted AS (
  INSERT INTO file_data (data)
  SELECT image
  FROM   task_log
  WHERE  image IS NOT NULL
  RETURNING id, data  -- can only reference target row
)
UPDATE task_log t
SET    attachment_id = i.id
     , attachment_type = 'INLINE_IMAGE'
FROM   inserted i
WHERE  t.image = i.data;

जैसा कि आपने मेरे पुराने उत्तर में बताया है, image task_log . में अद्वितीय होना चाहिए इसके काम करने के लिए:

मैंने एक तकनीक जोड़ी है कि संदर्भित उत्तर में गैर-अद्वितीय मूल्यों को कैसे अलग किया जाए। सुनिश्चित नहीं हैं कि आप file_data में डुप्लीकेट इमेज चाहते हैं या नहीं , हालांकि।

RETURNING में एक INSERT . का खंड आप केवल सम्मिलित पंक्ति से कॉलम का संदर्भ दे सकते हैं। मैनुअल:

बोल्ड जोर मेरा।

डुप्लिकेट स्रोत मानों को मोड़ें

यदि आप INSERT . की लक्ष्य तालिका में अलग-अलग प्रविष्टियां चाहते हैं (task_log ), इस मामले में आपको केवल DISTINCT . की आवश्यकता है आरंभिक में SELECT :

WITH inserted AS (
  INSERT INTO file_data (data)
  SELECT DISTINCT image  -- fold duplicates
  FROM   task_log
  WHERE  image IS NOT NULL
  RETURNING id, data  -- can only reference target row
)
UPDATE task_log t
SET    attachment_id = i.id
     , attachment_type = 'INLINE_IMAGE'
FROM   inserted i
WHERE  t.image = i.data;

परिणामी file_data.id task_log . में कई बार उपयोग किया जाता है . ध्यान रखें कि task_log . में कई पंक्तियाँ अब उसी छवि को file_data . में इंगित करें . अपडेट और डिलीट करने में सावधानी...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रिमोट मशीन पर डंप को पुनर्स्थापित करें

  2. पिछले 10 दिनों से तारीख के साथ रिकॉर्ड कैसे सूचीबद्ध करें?

  3. स्क्लेल्केमी पेजिनेशन के साथ काम नहीं करता है

  4. Postgresql में टेक्स्ट डेटाटाइप का अधिकतम आकार

  5. PHP विंडोज़ पर php_pgsql.dll लोड नहीं कर रहा है