INFORMATION_SCHEMA.COLUMNS से दो कॉलम वाली टेबल ढूंढना
डेटाबेस में वे सभी टेबल खोजने जिनमें दो खास कॉलम (जैसे 'Id' और 'Name') दोनों मौजूद हों, INFORMATION_SCHEMA.COLUMNS के साथ GROUP BY और HAVING का उपयोग करें।
क्वेरी: Id और Name दोनों कॉलम वाली टेबल्स
SELECT TABLE_NAME AS TableNameFromWebDatabase
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('Id', 'Name')
GROUP BY TABLE_NAME
HAVING COUNT(*) = 2;
आउटपुट उदाहरण
+--------------------------+ | TableNameFromWebDatabase | +--------------------------+ | student | | distinctdemo | | secondtable | | groupconcatenatedemo | | indemo | | ifnulldemo | | demotable211 | | demotable212 | | demotable223 | | demotable233 | | demotable251 | | demotable255 | +--------------------------+
कैसे काम करता है
WHERE COLUMN_NAME IN ('Id', 'Name')- केवल ये दो कॉलम वाली रो चुनता हैGROUP BY TABLE_NAME- टेबल के अनुसार ग्रुप करता हैHAVING COUNT(*) = 2- केवल वे टेबल जिनमें दोनों कॉलम हैं (काउंट = 2)
वेरिफिकेशन: एक टेबल का डिस्क्रिप्शन
DESC demotable233;
+-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+
महत्वपूर्ण नोट
COUNT(*) = 2मानता है कि दोनों कॉलम नाम अलग हैं- अगर एक ही नाम के दो कॉलम हों (असंभव), तो गलत परिणाम देगा
- अधिक सटीक:
HAVING COUNT(DISTINCT COLUMN_NAME) = 2 - स्कीमा फ़िल्टर जोड़ें:
AND TABLE_SCHEMA = 'your_db'
तीन या अधिक कॉलम के लिए
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('Id', 'Name', 'Email')
AND TABLE_SCHEMA = 'my_database'
GROUP BY TABLE_NAME
HAVING COUNT(DISTINCT COLUMN_NAME) = 3;