具体来说我正在使用MySql。我的数据库中有很多表,如员工,学生,雇主等。有20多个这样的表。在每个表格中,我都有一个名为“用户名”和“年龄”的列。现在我想要一个查询,当我给出一个特定的用户名='alex'时,它会给我所有的年龄。
答案 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';
从上面的查询中,您将是所有具有字段用户名的表名,然后我可以构建查询以获取所有表中的值;