从MySQL数据库中的所有列中选择所有数据

时间:2013-05-20 17:31:30

标签: mysql database select mysql-workbench

假设我在数据库DB1中有以下数据:

表1 id int(50) attribute varchar(255)

总行数:6550

表2 id int(50) attribute varchar(255) attribute1 varchar(255)

总行数:10550

并说可能更多的表。我希望获得所有表中的每个数据元素。是否有任何SELECT语句可以做到这一点?我尝试使用

select * from DB1.Table1 UNION ALL select * from DB1.Table2;

然而,这给了我一个错误,说明行数不同,因此无法完成。告诉我是否有任何方法可以告诉我?

问候。

4 个答案:

答案 0 :(得分:2)

您必须明确提供每个表的列。像:

select id, attribute, '' AS attribute1 from DB1.Table1
UNION ALL 
select id, attribute, attribute1 from DB1.Table2;

答案 1 :(得分:1)

我认为你可以做到:     从db1.table1,db1.table2

中选择*

答案 2 :(得分:1)

UNION可以工作,但是不要使用*,你需要在第一个表的SELECT上添加一个“额外”列(但是这个列实际上不必存在于表中,它只是添加了这样选择匹配)。像这样:

SELECT t1.id as 'id',
       t1.attribute as 'attribute',
       '' as 'attribute1'
FROM DB1.Table1 as t1

UNION ALL

SELECT t2.id as 'id',
       t2.attribute as 'attribute',
       t2.attribute1 as 'attribute1'
FROM DB1.Table2 as t2

答案 3 :(得分:0)

在联合中,您必须在所有select语句中具有相同数量的列。所以说“select * from table1 union select * from table2”将不起作用,你需要为列数少于最多的列的表添加虚拟列。

结果意味着什么?您有一个专栏,有时会包含客户邮政编码,有时包含订单总数,有时还包含员工编号。你会怎么做?

如果关键是要转储数据库的全部内容供人类查看,为什么不为每个表单独执行一个select语句呢?

也许你需要退一步看看你想要完成的事情,而不是如何让数据库做一些明确设计的事情,因为它没有意义。