我有很多具有相同结构的表格在我的数据库中。我想要从所有表格中选择,而不需要像下面这样罗列它们:
SELECT name FROM table1,table2,table3,table4
我尝试了,但这并不起作用:
SELECT name FROM *
有没有一种方法可以选择数据库中的所有表,而不需要在查询中列出每个表?
我有很多具有相同结构的表格在我的数据库中。我想要从所有表格中选择,而不需要像下面这样罗列它们:
SELECT name FROM table1,table2,table3,table4
我尝试了,但这并不起作用:
SELECT name FROM *
有没有一种方法可以选择数据库中的所有表,而不需要在查询中列出每个表?
我找到了一个解决方案,但我仍然想知道是否有更简单或更好的解决方案。
但这是我想出来的:
$tables = mysql_query("show tables");
$string = '';
while ($table_data = mysql_fetch_row($tables)){
$string.=$table_data[0].',';
}
$ALL_TABLES = substr($string,0,strlen($string)-1);
$sql="SELECT name FROM $ALL_TABLES ";
视图
,然后调用该视图
(这将节省您每次编写名称的时间)- VoodooChild这意味着您不应该拥有许多具有完全相同结构的表格。
而是只需要一个带有字段来区分不同种类数据的表格,无论它是什么。
然后选择所有将不会成为问题。
听起来你想要将每个表联合在一起,这样你就可以得到它们像一个大表一样的结果。你需要完整地编写查询语句,例如:
SELECT * FROM table1 UNION SELECT * FROM table2 UNION ... SELECT * FROM tableN
复制和粘贴可能是您的好朋友。
我很好奇为什么您有许多具有相同结构的不同表格?
--Author: Ah.Ghasemi
Declare @Select sysname;
DECLARE A CURSOR
FOR Select 'select ' + '*' + ' from ' + name
from sys.tables
--Where name like 'tbl%'
Order by name
OPEN A
FETCH NEXT FROM A INTO @Select
While (@@FETCH_STATUS <>-1)
Begin
exec sp_executesql @Select
FETCH NEXT FROM A INTO @Select;
End
close A
Deallocate A
如果问题没有解决,请告诉我们。
祝你一切顺利。