我有一个数据库,其中包含包含电子邮件字段的多个表。现在,可以说它们分别称为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';
这会导致语法错误。
我已经搜索了子查询,但是无法使该查询正常工作。有人可以帮我吗?
提前感谢您的时间。
答案 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';