2013-06-26 74 views
1

我有一個龐大的數據庫和列名,我不知道它是否存在於我的任何表中。 如何檢查其存在?如何從數據庫中檢查列是否存在表中?

+0

VladH表示對我的回答,這就是他一直在尋找 - 如果這個問題可以改寫,以反映這一點,我覺得這將是不太廣泛。他甚至指出,他的問題不知道哪一張桌子恰好佔據了這一列。 – SubSevn

+0

我編輯了你的文章,以保持一切清晰。 – VladH

回答

2

SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'db_name'
AND COLUMN_NAME = 'column_name'

+0

來自http://stackoverflow.com/questions/3395798/mysql-check-if-a-column-exists-in-a-table-with-sql – SubSevn

+0

乾杯!問題是我不知道包含表的名稱,但顯然「SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA ='db_name'AND COLUMN_NAME ='column_name'」「工作。 – VladH

+0

是的,你可以編輯'WHERE'條款來滿足你的需求 - 很高興它爲你工作! – SubSevn

1

如果您需要檢查所有的表,您可能需要先列出的表:

SHOW TABLES FROM database_name; 

然後,通過表圈(以代碼,例如,PHP),並執行此查詢:

SHOW COLUMNS FROM database_name.table_name LIKE 'mycol'; 

如果列上存在該列,將返回結果。

您也可以直接從information_schema中選擇,但是在某些情況下,我發現這在使用MySQL和大型數據庫時會很慢。

1
SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME IN ('columnA','ColumnB') 
     AND TABLE_SCHEMA='YourDatabase'; 

please check above code with your database 
+0

感謝這工作得很好! – VladH

0
 

SELECT * FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME ='table_name' AND COLUMN_NAME = 'col_name' 

0

使用信息架構下面

select * 
from information_schema.tables 
where table_name = 'employee' 
and table_schema = 'test'; 
相關問題