2012-04-23 173 views
0

具体而言,我使用MySql.I在我的数据库中有很多表,如员工,学生,雇主等等。有超过20个这样的表。在每个表格中,我都有一个名为“用户名”和“年龄”的列。现在我想要一个能给我所有年龄的查询,当我给一个特定的用户名='alex'时。Mysql查询选择所有具有相同列名的表

+0

看起来对我来说设计很差。 – Jasper 2012-04-23 10:32:27

+0

你想从三个表中检索数据吗? – 2012-04-23 10:33:29

+0

我没有这种问题的经验,但这个http://dev.mysql.com/doc/refman/5.0/en/show-tables.html看起来像一个问题的答案 – 2012-04-23 10:36:00

回答

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. 
0

它看起来像数据库的设计不良,如果你可以改变数据库结构,这可能是要走的路。否则,你可以试试这个:

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

查询得到,并具有表名特定列

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中可以建立查询以从所有表中获取值;

相关问题