首页 > 解决方案 > 从选择查询中查找数据库名称

问题描述

我在这个话题上搜索得很辛苦,但没有找到任何相关的东西。

MySQL 问题:是否可以在选择查询中显示保存表行的数据库?

例如,我有 3 个数据库,每个数据库都具有相同的结构。我运行这样的东西:

select database(), id, name, created_on from (
select * from db1.user
union all
select * from db2.user
union all 
select * from db3.user) as q where id = "123";

在这种情况下,database()指的是从中运行查询的当前数据库。我想更改它以显示包含行和表的数据库名称db1db2db3

我不确定这是否可能,所以我希望有人对此有所了解。谢谢!

标签: mysqldatabase-metadata

解决方案


问题是 DATABASE() 函数返回当前默认数据库的名称。当您将数据库明确包含在查询中时,这与查询中使用的数据库不同。

另一种方法是在您的选择中包含数据库的名称,因此:

select db, id, name, created_on from (
select "db1" as db, user.* from db1.user
union all
select "db2" as db, user.* from db2.user
union all 
select "db3" as db, user.* from db3.user) as q where id = "123";

请注意,“数据库”是一个保留字(因为它指的是数据库功能,所以请记住,如果您决定更改我使用的名称从“db”。


推荐阅读