我將開發服務器上的數據庫表與實時服務器進行比較,查找列名更改,新列和刪除的列。我想要做這樣的事情:將SHOW COLUMNS的輸出分組爲逗號分隔列表
SELECT GROUP_CONCAT(Field) FROM (SHOW COLUMNS ON table_name) GROUP BY Field
我所追求的是一個逗號分隔的列表,我可以再取到實時服務器,並做到:
SHOW COLUMNS FROM table_name WHERE NOT IN ([comma-delimited list from above query])
如何有什麼想法最好做到這一點 - 要麼以我自己的方式糾正我,要麼通過其他方式一起糾正?顯然,上述SQL不起作用。
備註:服務器完全獨立,可能無法相互通信,因此不可能進行直接比較。
編輯
感謝您的答案,夥計們!運用你的問題的答案,這是我最後的SQL得到的列名:
SELECT CONCAT("'", GROUP_CONCAT(column_name ORDER BY ordinal_position SEPARATOR "', '"), "'") AS columns
FROM information_schema.columns
WHERE table_schema = 'db_name' AND table_name = 'tbl_name'
這讓我看起來像這樣的列表:
'id', 'name', 'field1', 'field2'
那麼我可以用這個查詢比較:
SELECT GROUP_CONCAT(column_name ORDER BY ordinal_position)
FROM information_schema.columns
WHERE table_schema = 'db_name' AND table_name = 'tbl_name' AND column_name NOT IN ('id', 'name', 'field1', 'field2')
結果是第一個數據庫中存在的任何列的列表,而不是第二個數據庫中的列。完善!
謝謝,艾克。尼克在你之前,但爲你的答案+1,非常感謝! – 2011-03-03 21:24:17