mysql - 从选择查询中查找数据库名称
问题描述
我在这个话题上搜索得很辛苦,但没有找到任何相关的东西。
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()
指的是从中运行查询的当前数据库。我想更改它以显示包含行和表的数据库名称db1
(db2
或db3
)
我不确定这是否可能,所以我希望有人对此有所了解。谢谢!
解决方案
问题是 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”。
推荐阅读
- angular - SheetJs自动转换日期角度7
- angular - 路由器导航 SlideIn 动画不起作用
- curl - 尽管 curl 代码中有单引号,但仍会出错
- php - 如果它遵循版本号格式,我如何正确检查字符串格式?
- mysql - mysql 加入条件行为
- java - Picasso使用mysql url在arraylist hashmap中加载图像
- c++ - 为什么这两个涉及受保护派生类的 C++ 示例的编译方式不同?
- azure - Azure 函数队列触发器有时无法扩展,一个实例处理所有队列消息
- ruby - Ruby:带有编码回退选项的 CSV.open
- sql - sql 喜欢与另一个表