Mysql Query选择具有相同列名的所有表

时间:2012-04-23 10:31:10

标签: mysql

具体来说我正在使用MySql。我的数据库中有很多表,如员工,学生,雇主等。有20多个这样的表。在每个表格中,我都有一个名为“用户名”和“年龄”的列。现在我想要一个查询,当我给出一个特定的用户名='alex'时,它会给我所有的年龄。

3 个答案:

答案 0 :(得分:1)

您可能应该有一个表(例如,Users),其中表示该用户的类型(员工,学生,雇主等)。但是,如果您必须跨此类多个表进行查询,请使用UNION

SELECT age FROM employee WHERE username = 'alex' UNION ALL
SELECT age FROM student  WHERE username = 'alex' UNION ALL
SELECT age FROM employer WHERE username = 'alex' -- etc.

答案 1 :(得分:0)

看起来数据库的设计很差,如果你可以改变数据库结构,那可能就是这样。否则,你可以试试这个:

(SELECT username, age
 FROM table1)
UNION
(SELECT username, age
 FROM table2)
UNION
(SELECT username, age
 FROM table3)
...

答案 2 :(得分:0)

查询get和表名具有特定列

select table_name from information_schema.columns 
where table_name in (
select table_name from information_schema.tables
where table_schema='databaseName'
) and 
column_name='username';

从上面的查询中,您将是所有具有字段用户名的表名,然后我可以构建查询以获取所有表中的值;