我在同一个数据库中有一系列表。表名以组分隔,即同一组中的表具有相同的前缀。
这些表共享一个(至少一个)具有相同信息和相同列名的列(除了只有几个列名不同的表)。
我感兴趣的是了解哪些表具有特定值。 IE。我想获取其列具有特定值的表名,或者等效地我想对所有表执行 SELECT * WHERE COLUMN=value
并获取所有记录。我宁愿有表名,除非它太难了。
我为获得结果所做的操作如下:
我在编辑器中针对一组(即具有相同前缀的)和 where 子句的所有表手动编写了一个选择。
我复制/粘贴了所有这些选择并在查询 cli 中运行它们。
然后我在编辑器中进行了全部替换并将表名替换为第二组并再次复制/粘贴并运行它。
我继续对所有表进行替换/复制/粘贴(并在需要时替换列名)。
这似乎可以满足我的要求,但我觉得这很愚蠢。
我想一定有比这种方法更“专业”的方法,但我不知道如何。
最好的方法是什么?
以我的方式,如果我有另一个例如5 组我将不得不一遍又一遍地这样做。
最佳答案
您可以通过在您感兴趣的表上创建 View 来使事情变得更容易一些: 类似
CREATE VIEW group_one_view AS
SELECT 'taba' as tab_name, field1 FROM table_a
UNION ALL
SELECT 'tabb' as tab_name, field1 FROM table_b
UNION ALL
SELECT 'tabc' as tab_name, diff_field_name FROM table_c
然后你可以像使用表格一样使用group_one_view
select * from group_one_view where field1 = 'cheese'
http://sqlfiddle.com/#!2/a09b4/1
编辑
您可以从 information_schema 获得一些帮助(需要稍微完成查询 - 但可以节省一些键盘工作)
SELECT CONCAT( 'select ''', table_name, ''' tab_name, field1 from ', table_name, ' union all ' )
FROM information_schema.`TABLES`
WHERE table_name LIKE 'group_prefix_%'
关于mysql - 我怎样才能对数据库中的多个表或类似的东西进行全局选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17243111/