当前位置: 首页 > 面试题库 >

MySQL在多个数据库中寻找价值

平元明
2023-03-14
问题内容

我是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'
;


 类似资料:
  • 问题内容: 我有一个带有varchar列的表,我想在此列中查找具有重复值的所有记录。我可以用来查找重复项的最佳查询是什么? 问题答案: 用子句做一个。假设 name 是您要在其中查找重复项的列: 这将返回在第一列中具有 名称 值的结果,并计算该值在第二列中出现的次数。

  • 问题内容: 有什么命令可以从所有数据库中找到某个表吗?因为我忘了桌子在哪里。谢谢。 问题答案: 使用特定于MySQL的: …或使用ANSI标准INFORMATION_SCHEMA.TABLES:

  • 我已经使用 使用数据源连接数据库,但我们有50多个数据库。所以我想动态连接数据库。请帮帮我.

  • 问题内容: 考虑有一个名为的表: 该表在PeopleDb数据库中 现在,我想找到“ Mike”关键字。情况 : 我不知道要搜索哪个数据库,表。 我需要一个查询,它在所有数据库和表中进行搜索, 并向我显示以下内容: | Id | DatabaseName | TableName | ColumnName | Pk | SearchValue | 1 | ‘PeopleDb’ | ‘People’ |

  • 我想找出面积最大的国家。 我的数据集如下 有人能帮我写mapreduce程序吗? 我的映射器和缩减器代码如下 制图员 减速机

  • 问题内容: 我在同一服务器上的2个不同数据库中有2个相同的表。将数据从表复制到另一个表的最佳方法是什么? 问题答案: 使用: 存在是经过简化的,但是如果有主键/ auto_increment可以担心/等,那么您就省去了。