2012-01-09 48 views
1

我需要編寫一個查詢語句,如果我要求的所有表格都存在,將返回結果。我知道這是存在的:查詢是否存在多個表格

show tables like 'user' 

只是不知道如何擴展多表。我知道這是無效的代碼,但類似

show tables like 'user' AND show tables like 'site' AND ... 

謝謝!

+0

可以使用INFORMATION_SCHEMA.TABLES對象 - 見http://dev.mysql.com/doc/refman/5.0/en/tables-table.html – dash 2012-01-09 23:01:12

回答

3
select * 
from information_schema.tables 
where table_name in ('tb1','tb2','tb3') 
and table_schema = 'your_db' 
having count(table_name) = 3 

嗯,我意識到有一個與該查詢的問題。如果所有表存在,它只返回一條記錄。這將是一個更好的解決方案

select group_concat(table_name order by table_name) as table_list 
from information_schema.tables 
where table_name in ('tb1','tb2','tb3') 
and table_schema = 'your_db' 
having count(*) = 3 
+0

+1爲完整的例子。像化身;-) – dash 2012-01-09 23:03:51

+0

堆棧溢出是一個神奇的地方。神聖廢話,這個答案很快!謝謝!! – elightbo 2012-01-09 23:06:19

+0

@dash。謝謝。附:埃裏克規則,大聲笑! ;) – 2012-01-09 23:11:42

1

我知道這個作品在MySQL的(只是一個例子)

SHOW TABLES WHERE Tables_in_<database-name> IN ([<table-names-comma-separated>]) 

例子:

SHOW TABLES WHERE Tables_in_YourDB IN ('users', 'sites') 
+0

+ 1我沒不知道SHOW TABLES命令 - 謝謝! – dash 2012-01-09 23:04:48

+0

謝謝你給我正確的方式。 – elightbo 2012-01-09 23:23:41