在多个表中查找包含电子邮件的所有行

时间:2018-07-04 09:22:22

标签: mysql sql subquery

我有一个数据库,其中包含包含电子邮件字段的多个表。现在,可以说它们分别称为table1,table2和table3。

我想要一个查询来查找所有表中所有行中的特定域(... @ domain.com)。

我用来查看哪些表具有电子邮件行的查询:

Select * From INFORMATION_SCHEMA.COLUMNS WHERE column_name = 'email';

这将返回table1,table2,table3的列表。

我用来查看哪些行包含我正在搜索的域的查询:

Select * from table1 where email like '%@domain.com;

这将返回table1中所有行的列表,该电子邮件将在域中结束。

我正在寻找的是一个将table1,table2和table3的结果组合在一个列表中的查询。我认为可以的是:

Select * from (
Select * From INFORMATION_SCHEMA.COLUMNS Where column_name = 'email'
) where email like '%domain.com'

但这会返回错误:

[42000][1248] Every derived table must have its own alias

所以我想我只是把查询写出来:

select * from table1 where email like '%@domain.com' OR
select * from table2 where email like '%@domain.com' OR
select * from table3 where email like '%@domain.com';

这会导致语法错误。

我已经搜索了子查询,但是无法使该查询正常工作。有人可以帮我吗?

提前感谢您的时间。

1 个答案:

答案 0 :(得分:3)

尝试以下操作:

select * from table1 where email like '%@domain.com'
Union all
select * from table2 where email like '%@domain.com' 
Union all
select * from table3 where email like '%@domain.com';