用于从多个表中查找具有表名的所有记录的 SQL 查询

Posted

技术标签:

【中文标题】用于从多个表中查找具有表名的所有记录的 SQL 查询【英文标题】:SQL query for finding all records with Table Name from multiple table 【发布时间】:2016-11-12 22:48:04 【问题描述】:

我有三个表 Table1、Table2、Table3。每个表都包含“评论”列。所以我想找到带有表名的记录。

例如:

表 1

Id         Comments

98         test

99         test

100        attach

表2

Id    Comments 

101   test

102   test

103   module

Table3

Id    Comments

111   test

112   test

113   exist

如果我说select * from Table1,Table2,Table3 where comments like '%test%'

结果应该是这样的:

Id      Table    Comments

98      Table1   test

99      Table1   test

101     Table2   test

102     Table2   test

111     Table3   test

112     Table3   test

【问题讨论】:

【参考方案1】:

您可以使用UNION 查询:

SELECT Id, 'Table1' AS Table, Comments
FROM Table1
WHERE Comments LIKE '%test%'
UNION ALL
SELECT Id, 'Table2' AS Table, Comments
FROM Table2
WHERE Comments LIKE '%test%'
UNION ALL
SELECT Id, 'Table3' AS Table, Comments
FROM Table3
WHERE Comments LIKE '%test%`

【讨论】:

会影响性能吗?实际上我有数千条记录,将近 10 万 你的问题只写了一半。与什么相比,它会影响性能吗?如果您有替代方案,我们可以讨论性能。我看不到查询这三个表的方法。 非常感谢蒂姆·比格莱森

以上是关于用于从多个表中查找具有表名的所有记录的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

sql 查所有表中是不是有某个值

SQL注入的简单认识

Oracle SQL 从执行计划中检索具有表名的列名作为表

BigQuery 存储过程,用于捕获表名以及该表名的记录数

在 SQL Server 存储过程中查找表名的列名作为保留关键字

sql查询所有表以及表名的模糊查询