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

एकाधिक तालिकाओं में खोजें और परिणामी पंक्तियों में तालिका का नाम भी प्रदर्शित करें

आप गतिशील एसक्यूएल की तलाश में हैं। सिस्टम कैटलॉग से अपनी क्वेरी को स्वचालित रूप से इकट्ठा करें:

SELECT string_agg('SELECT student_name, '''
                   || c.oid::regclass || ''' AS tbl, pid FROM '
                   || c.oid::regclass
                   || $$ WHERE student_name = 'John Doe'$$
                 , E'\nUNION ALL\n')
FROM   pg_namespace n
JOIN   pg_class     c ON c.relnamespace = n.oid
WHERE  n.nspname = 'public'         -- schema name where your tables lie
AND    c.relname LIKE 't%'          -- and / or filter table names
AND    EXISTS (
   SELECT 1 FROM pg_attribute 
   WHERE  attrelid = c.oid
   AND    attname = 'student_name'  -- make sure column exists
   AND    NOT attisdropped          -- and is alive
   );

क्वेरी स्ट्रिंग उत्पन्न करता है:

SELECT student_name, 'tbl1' AS tbl, pid FROM tbl1 WHERE student_name = 'John Doe'
UNION ALL
SELECT student_name, 'tbl2' AS tbl, pid FROM tbl2 WHERE student_name = 'John Doe'
UNION ALL
SELECT student_name, 'tbl3' AS tbl, pid FROM tbl3 WHERE student_name = 'John Doe'
...

फिर इसे दूसरी कॉल में चलाएं या EXECUTE का उपयोग करके इसे PL/pgSQL फ़ंक्शन के साथ पूरी तरह से स्वचालित करें . उदाहरण:
किसी तालिका से स्तंभों का एक गतिशील सेट चुनें और प्रत्येक के लिए योग प्राप्त करें

यह क्वेरी सुरक्षित . उत्पन्न करती है SQL इंजेक्शन को रोकने वाले सैनिटाइज्ड आइडेंटिफ़ायर वाला कोड। (oid::regclass . के लिए स्पष्टीकरण यहाँ।)

अधिक संबंधित उत्तर हैं। खोज का उपयोग करें।

बीटीडब्ल्यू, LIKE in student_name LIKE 'John Doe' व्यर्थ है। वाइल्डकार्ड के बिना, बस = का उपयोग करें ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दिल की धड़कन के साथ PostgreSQL के लिए उच्च उपलब्धता को ट्रैक करना

  2. कैसे टैंड () PostgreSQL में काम करता है

  3. क्या रेल एडेप्टर एसएसएल का समर्थन करता है?

  4. पीजी कॉपी त्रुटि:पूर्णांक के लिए अमान्य इनपुट सिंटैक्स

  5. प्राथमिक कुंजी को पूर्णांक से सीरियल में कैसे बदलें?