MySQL在多个数据库中寻找价值
我是MySQL的新手,我很难理解如何在多个数据库中进行查询。
在解释基础结构时,我目前正在一个作业中,我在一个具有数据库集合的公共测试数据库中。
我有一个标识符值,我想在我知道存在于特定表中的所有数据库中进行搜索。在本示例中,我将使用表名称“
table1”。问题在于,并非所有数据库都拥有我正在表中查找的标识符列。
我的问题涉及两个部分:-如何搜索所有数据库以返回包含此列(table1.id)中包含特定值的所有数据库名称的集合-
如何验证该列是否存在,以便我可以真正去做检查,以查看我要查找的id是否与其他数据库的table1.id值匹配?
在较小的范围内,我制定了用于检查单个表的代码:
SELECT * FROM table1
WHERE searchId = db1.table1.id;
区别在于,我想在所有数据库table1中搜索该特定值,同时确保此列首先存在于表中。
-
这应该使您开始:
SELECT table_schema FROM information_schema.columns WHERE table_name = 'table1' AND column_name = 'id' ;
由此,您可以以任何编程语言使用结果来构成针对每个数据库的特定查询。
另外,最近我也发现与此类似的边界滥用行为。
SELECT CONCAT("SELECT '", table_schema, "' " "FROM `", table_schema, "`.`", table_name, "` " "WHERE `", column_name, "` = ", searchId ) AS qStr FROM information_schema.columns WHERE table_name = 'table1' AND column_name = 'id' ;
您将它们的结果以及
UNION
两者之间串联在一起,结果查询将为您提供所有模式的列表,这些模式的表名称和字段名称均与searchId相匹配。编辑:用单引号替换了上面不适当的反引号,并…在下面添加了这个。
SET @criteriaVal := "'somestring'"; -- SET @criteriaVal := 3; -- for example SELECT CONCAT("SELECT '", table_schema, "' " "FROM `", table_schema, "`.`", table_name, "` " "WHERE `", column_name, "` = ", @criteriaVal ) AS qStr FROM information_schema.columns WHERE table_name = 'table1' AND column_name = 'id' ;
-
使用MySQL在多个数据库中选择并插入
2021-04-20 关注 0 浏览153 1答案
-
MySQL数据库在两个数据库之间同步
2021-02-02 关注 0 浏览112 1答案
-
将多个数据库合并到一个数据库中
2021-03-12 关注 0 浏览125 1答案
-
在zf2中配置多个数据库
2021-02-02 关注 0 浏览71 1答案
-
在Spring Boot中连接到多个数据库
2021-02-02 关注 0 浏览149 1答案
-
多个数据库联接
2021-03-12 关注 0 浏览125 1答案
-
Django中的多个数据库和多个模型
2021-02-02 关注 0 浏览116 1答案
-
用于mysql的多个docker容器或具有多个数据库的一个实例
2021-02-01 关注 0 浏览235 1答案
-
在RedShift中使用Django多个数据库
2021-01-29 关注 0 浏览129 1答案
-
从具有多个数据库的实例中复制单个Redis数据库
2021-02-01 关注 0 浏览128 1答案