जवाबों:
स्तंभ columnA
या ColumnB
डेटाबेस में सभी तालिकाएँ प्राप्त करने के लिए YourDatabase
:
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('columnA','ColumnB')
AND TABLE_SCHEMA='YourDatabase';
DATABASE()
वर्तमान में चयनित डेटाबेस में खोज करने के लिए एक स्ट्रिंग के बजाय उपयोग कर सकते हैं ।
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%wild%';
TABLE_SCHEMA
सभी डेटाबेस + तालिकाओं को देखने के लिए सेट किए गए रिटर्न के फ़ील्ड में जोड़ें , जिसमें वह कॉलम नाम है।
show tables;
। क्या कोई समझा सकता है कि ऐसा क्यों हो सकता है?
अधिक बस SQL की एक पंक्ति में किया जाता है:
SELECT * FROM information_schema.columns WHERE column_name = 'column_name';
उस संस्करण में, जिसमें information_schema
पुराने संस्करण (या कुछ ndb) नहीं हैं, आप तालिका संरचना को डंप कर सकते हैं और स्तंभ को मैन्युअल रूप से खोज सकते हैं।
mysqldump -h$host -u$user -p$pass --compact --no-data --all-databases > some_file.sql
अब some_file.sql
अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके कॉलम नाम खोजें , या कुछ निफ्टी awk स्क्रिप्ट का उपयोग करें।
और कॉलम खोजने के लिए एक साधारण सीड स्क्रिप्ट, बस COLUMN_NAME को अपने साथ बदलें :
sed -n '/^USE/{h};/^CREATE/{H;x;s/\nCREATE.*\n/\n/;x};/COLUMN_NAME/{x;p};' <some_file.sql
USE `DATABASE_NAME`;
CREATE TABLE `TABLE_NAME` (
`COLUMN_NAME` varchar(10) NOT NULL,
आप सीधे सेड में डंप कर सकते हैं लेकिन यह तुच्छ है।
इसके विलोम की खोज करने वालों के लिए, यानी उन टेबल की तलाश में जिनमें एक निश्चित कॉलम नाम नहीं है, यहाँ क्वेरी है ...
SELECT DISTINCT TABLE_NAME FROM information_schema.columns WHERE
TABLE_SCHEMA = 'your_db_name' AND TABLE_NAME NOT IN (SELECT DISTINCT
TABLE_NAME FROM information_schema.columns WHERE column_name =
'column_name' AND TABLE_SCHEMA = 'your_db_name');
यह वास्तव में उपयोगी था जब हमने धीरे-धीरे InnoDB के विशेष ai_col
कॉलम के उपयोग को लागू करना शुरू किया और यह पता लगाने की जरूरत थी कि हमारे 200 टेबल में से कौन सा अभी तक उन्नत नहीं हुआ है।
यदि आप " केवल सभी तालिकाएँ प्राप्त करना चाहते हैं" , तो इस क्वेरी का उपयोग करें:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like '%'
and TABLE_SCHEMA = 'tresbu_lk'
यदि आप " कॉलम के साथ सभी तालिकाएँ प्राप्त करना चाहते हैं" , तो इस क्वेरी का उपयोग करें:
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE '%'
AND TABLE_SCHEMA='tresbu_lk'
इस एक पंक्ति क्वेरी का उपयोग करें, अपने कॉलम नाम से वांछित_column_name बदलें।
SELECT TABLE_NAME FROM information_schema.columns WHERE column_name = 'desired_column_name';
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%city_id%' AND TABLE_SCHEMA='database'
Info_schema के साथ समस्या यह है कि यह बहुत धीमा हो सकता है। SHOW कमांड का उपयोग करना तेज है।
डेटाबेस का चयन करने के बाद आप सबसे पहले क्वेरी शॉवेल्स भेजें। और फिर आप प्रत्येक टेबल के लिए SHOW COLUMNS करते हैं।
PHP में जो कुछ इस तरह दिखेगा
$ res = mysqli_query ("शो टेबल"); जबकि ($ पंक्ति = mysqli_fetch_array ($ res)) {$ rs2 = mysqli_query ("SHOW COLUMNS FROM"। $ row [0]); जबकि ($ rw2 = mysqli_fetch_array ($ rs2)) {अगर ($ rw2 [0] == $ लक्ष्य) .... } }
select distinct table_name
from information_schema.columns
where column_name in ('ColumnA')
and table_schema='YourDatabase';
and table_name in
(
select distinct table_name
from information_schema.columns
where column_name in ('ColumnB')
and table_schema='YourDatabase';
);
उस ^ ^ को स्वीकार किए गए उत्तर की तरह स्तंभ या स्तंभ के बजाय कॉलम और कॉलम के साथ टेबल मिल जाएगा