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

PostgreSQL यह सरल पूर्ण जॉइन क्यों नहीं कर सकता?

PostgreSQL FULL OUTER JOIN लागू करता है हैश या मर्ज जॉइन के साथ।

इस तरह के शामिल होने के योग्य होने के लिए, शामिल होने की शर्त के पास फॉर्म होना चाहिए

<expression using only left table> <operator> <expression using only right table>

अब आपकी शामिल होने की शर्त करती है इस तरह दिखें, लेकिन PostgreSQL में कोई विशेष IS NOT DISTINCT FROM . नहीं है ऑपरेटर, इसलिए यह आपकी स्थिति को इसमें पार्स करता है:

(NOT ($1 IS DISTINCT FROM $2))

और ऐसी अभिव्यक्ति का उपयोग हैश या मर्ज जॉइन के लिए नहीं किया जा सकता है, इसलिए त्रुटि संदेश।

मैं इसके आसपास काम करने के तरीके के बारे में सोच सकता हूं:

SELECT a_id, NULLIF(a_value, '<null>'),
       b_id, NULLIF(b_value, '<null>')
FROM (SELECT id AS a_id,
             COALESCE(value, '<null>') AS a_value
      FROM a
     ) x
   FULL JOIN
     (SELECT id AS b_id,
             COALESCE(value, '<null>') AS b_value
      FROM b
     ) y
      ON x.a_value = y.b_value;

यह काम करता है अगर <null> value में कहीं भी दिखाई नहीं देता कॉलम।



  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. psql:FATAL:भूमिका के लिए बहुत सारे कनेक्शन

  3. Heroku . पर डेटाबेस को देख रहे हैं

  4. मैं कैसे (या मैं कर सकता हूँ) एकाधिक स्तंभों पर DISTINCT का चयन करें?

  5. क्या पोस्टग्रेएसक्यूएल में यूनियन के बाद ऑर्डर संरक्षित है?