从 select 查询中查找数据库名称
Find database name from select query
我用谷歌搜索了这个主题,但没有找到任何相关内容。
MySQL 问题:是否可以在 select 查询中显示包含 table 行的数据库?
例如,我有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()
指的是查询 运行 来自的当前数据库。我想更改它以显示保存该行的数据库名称,而不是 table(db1
、db2
或 db3
)
我不确定这是否可行,所以我希望有人能提供线索。谢谢!
您可以按照以下棘手的步骤获得所需的结果。
1)首先,在所有三个数据库的用户table中创建db_name列。
2) 然后,在你的插入查询中添加 db_name 的值作为数据库 (),因此在插入时,它将存储相应的数据库名称(即当从 db1 执行插入查询时,[=18 的值=] 将是 db1,类似地 db_name db2 和 db3 的列将分别具有值 db2 和 db3。
3) 然后在您的查询中只需将 database() 替换为 db_name.
因此,您将获得相应的数据库名称。
问题是 DATABASE() 函数 returns 当前默认数据库的名称。当您明确将数据库作为查询的一部分时,这将与查询中使用的数据库不同。
另一种方法是在 select 中包含数据库名称,因此:
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";
请注意 "database" 是一个保留字(因为它指的是数据库功能,所以请记住,如果您决定更改我使用的名称 "db"。
我用谷歌搜索了这个主题,但没有找到任何相关内容。
MySQL 问题:是否可以在 select 查询中显示包含 table 行的数据库?
例如,我有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()
指的是查询 运行 来自的当前数据库。我想更改它以显示保存该行的数据库名称,而不是 table(db1
、db2
或 db3
)
我不确定这是否可行,所以我希望有人能提供线索。谢谢!
您可以按照以下棘手的步骤获得所需的结果。
1)首先,在所有三个数据库的用户table中创建db_name列。
2) 然后,在你的插入查询中添加 db_name 的值作为数据库 (),因此在插入时,它将存储相应的数据库名称(即当从 db1 执行插入查询时,[=18 的值=] 将是 db1,类似地 db_name db2 和 db3 的列将分别具有值 db2 和 db3。
3) 然后在您的查询中只需将 database() 替换为 db_name.
因此,您将获得相应的数据库名称。
问题是 DATABASE() 函数 returns 当前默认数据库的名称。当您明确将数据库作为查询的一部分时,这将与查询中使用的数据库不同。
另一种方法是在 select 中包含数据库名称,因此:
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";
请注意 "database" 是一个保留字(因为它指的是数据库功能,所以请记住,如果您决定更改我使用的名称 "db"。