使用单选语句在数据库中的所有表中进行搜索

时间:2017-05-06 15:21:33

标签: mysql sql select union-all

大家好,任何在MYSQL中使用此SELECT STATEMENT的简单方法。 我们的想法是尝试在 DataBase1

的所有表中使用1个语句进行搜索
SELECT NAME,ADDRESS,DATA FROM DataBase1.Table1 WHERE ADDRESS IN('India','Japan') UNION ALL

SELECT NAME,ADDRESS,DATA FROM DataBase1.Table2 WHERE ADDRESS IN('India','Japan') UNION ALL

SELECT NAME,ADDRESS,DATA FROM DataBase1.Table3 WHERE ADDRESS IN('India','Japan')

提前感谢你

1 个答案:

答案 0 :(得分:0)

我不知道如何获取MySQL中获取的行的当前序号;在StackOverflow中阅读,你需要一个变量来实现它。

下面的查询将生成此报告 - 将其格式化为纯文本并将其保存到文件以获取SQL脚本:

UNION ALL

然后,您必须从生成的查询中删除第一个SELECT CONCAT ( 'UNION ALL ' , 'SELECT NAME,ADDRESS,DATA FROM ' , table_schema , '.' , table_name , ' WHERE ADDRESS IN(''India'',''Japan'')' FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'Database1' ,或将其替换为十个空格以保持对齐。

CONCAT()

如果有办法获取当前行号,可以用表达式替换CASE row_number WHEN 1 THEN ' ' ELSE 'UNION ALL ' END函数的第一个参数: {{1}},在报告中获取准备好运行的完整SQL语句。

相关问题