有人可以幫我解決這個mysql問題嗎?我試圖從一個數據庫中獲取所有表名。匹配的表名與顯示錶
在我的分貝我有這樣的表:
_table1, _table2, 表3, 表4, table5_xrefs
,但我想只有不表_在開始和無_xref在結束。 所以在這個例子中我只需要table3和table4。
我使用show tables
來顯示所有的表名稱,並在我使用php來匹配正確的表名。我想知道如果我只能使用mysql查詢來做同樣的事情。
有人可以幫我解決這個mysql問題嗎?我試圖從一個數據庫中獲取所有表名。匹配的表名與顯示錶
在我的分貝我有這樣的表:
_table1, _table2, 表3, 表4, table5_xrefs
,但我想只有不表_在開始和無_xref在結束。 所以在這個例子中我只需要table3和table4。
我使用show tables
來顯示所有的表名稱,並在我使用php來匹配正確的表名。我想知道如果我只能使用mysql查詢來做同樣的事情。
這是可能的,但你必須知道從SHOW TABLES
返回的列名稱查詢是字符串tables_in_
和您的數據庫名稱的串聯。因此,它是這樣的,對於數據庫test
:
SHOW TABLES
WHERE tables_in_test NOT LIKE '\_%'
AND tables_in_test NOT LIKE '%\_xrefs'
但我更願意用information_schema
數據庫得到這個信息:
SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = SCHEMA() /* = 'test'*/
AND TABLE_NAME NOT LIKE '\_%'
AND TABLE_NAME NOT LIKE '%\_xrefs'
您可以在SHOW TABLES查詢中use LIKE or WHERE。
是的,這是事實。我可以使用'喜歡',但我不能使用'不喜歡'或我錯了 – Katie 2010-12-13 18:38:59
非常感謝。我意識到第一個查詢比第二個查詢快?你爲什麼喜歡使用那個? – Katie 2010-12-13 18:48:14
主要是爲了保持一致性,我使用information_schema獲取更多關於應用程序中表和字段的信息。第二個原因是我不喜歡在列名中有變量 - 它不能輕易地放入存儲過程中。 – 2010-12-13 19:06:47