Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql查询选择所有具有相同列名的表_Mysql - Fatal编程技术网

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

Mysql查询选择所有具有相同列名的表,mysql,Mysql,具体来说,我使用的是MySql。我的数据库中有很多表,比如employee、student、employer等。有20多个这样的表。在每个表中,我都有一个名为“用户名”和“年龄”的列。现在,我需要一个查询,当我给出一个特定用户名时,该查询将为我提供所有年龄段的数据。您可能应该有一个表(例如,用户),其中有一列指示该用户是什么类型的人(员工、学生、雇主等)。但是,如果必须跨多个此类表进行查询,请使用: 看起来数据库的设计很糟糕,如果你能改变数据库结构,那可能就是最好的选择。否则,您可以尝试以下方法

具体来说,我使用的是MySql。我的数据库中有很多表,比如employee、student、employer等。有20多个这样的表。在每个表中,我都有一个名为“用户名”和“年龄”的列。现在,我需要一个查询,当我给出一个特定用户名时,该查询将为我提供所有年龄段的数据。

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


看起来数据库的设计很糟糕,如果你能改变数据库结构,那可能就是最好的选择。否则,您可以尝试以下方法:

(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';

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

在我看来,这似乎是一个糟糕的设计。您想从三个包含的表中检索数据吗?我没有处理此类问题的经验,但这似乎是您问题的答案
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';