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

एक जटिल क्वेरी में दो तालिकाओं में शामिल होना (एकसमान डेटा नहीं)

SELECT DISTINCT ON (1)
       t.id, d.address, d.id
FROM   data_table t
JOIN   dictionary d ON replace(d.address, ' ', '')
                 LIKE (replace(t.address, ' ', '') || '%')
ORDER  BY t.id, d.address, d.id

(ORDER BY प्रश्न अपडेट के बाद अपडेट किया गया।) बिना ORDER BY . के यह एक मनमाना मैच चुन रहा है।
इस संबंधित उत्तर में तकनीक के लिए स्पष्टीकरण:
प्रत्येक समूह द्वारा समूह में पहली पंक्ति का चयन करें?

आपके शब्दकोश पर एक कार्यात्मक अनुक्रमणिका इसे तेज़ बना देगी :

CREATE INDEX dictionary_address_text_pattern_ops_idx
ON dictionary (replace(address, ' ', '') text_pattern_ops);

इसके लिए और स्पष्टीकरण मैंने पूर्ववर्ती प्रश्न को दिए गए उत्तर में दिया है। ।

कोई बहस कर सकता है कि क्या यह आपको "सर्वश्रेष्ठ" मैच देता है। एक विकल्प ट्रिग्राम इंडेक्स के साथ एक समानता मैच होगा। आपके अंतिम प्रश्न में मैंने जो लिंक जोड़े हैं उनमें से पहले का विवरण।



  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. पोस्टग्रेज दृश्य के लिए Django मॉडल

  3. मैं हेरोकू में कॉलम प्रकार कैसे बदलूं?

  4. PostgreSQL फ़ंक्शन पैरामीटर के रूप में तालिका का नाम

  5. चयन कथन से प्राप्त क्वेरी और पंक्तियों के आधार पर तालिका कैसे बनाएं?