Mysql查询选择所有具有相同列名的表
问题描述:
具体而言,我使用MySql.I在我的数据库中有很多表,如员工,学生,雇主等等。有超过20个这样的表。在每个表格中,我都有一个名为“用户名”和“年龄”的列。现在我想要一个能给我所有年龄的查询,当我给一个特定的用户名='alex'时。Mysql查询选择所有具有相同列名的表
答
您可能应该有一个表格(例如,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.
答
它看起来像数据库的设计不良,如果你可以改变数据库结构,这可能是要走的路。否则,你可以试试这个:
(SELECT username, age
FROM table1)
UNION
(SELECT username, age
FROM table2)
UNION
(SELECT username, age
FROM table3)
...
答
查询得到,并具有表名特定列
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';
从上述查询你将具有该领域的用户名,然后所有的表名我PHP中可以建立查询以从所有表中获取值;
看起来对我来说设计很差。 – Jasper 2012-04-23 10:32:27
你想从三个表中检索数据吗? – 2012-04-23 10:33:29
我没有这种问题的经验,但这个http://dev.mysql.com/doc/refman/5.0/en/show-tables.html看起来像一个问题的答案 – 2012-04-23 10:36:00