我有一个包含多个表的数据库,其中包含一个电子邮件字段。现在,假设它们被称为 table1、table2 和 table3。
我想要一个在所有行、所有表中查找特定域 (...@domain.com) 的查询。
我用来查看哪些表有电子邮件行的查询:
Select * From INFORMATION_SCHEMA.COLUMNS WHERE column_name = 'email';
这将返回表 1、表 2、表 3 的列表。
我用来查看哪些行包含我要搜索的域的查询:
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';
这会导致语法错误。
我已经搜索了子查询,但我无法使该查询起作用。谁能帮帮我?
提前感谢您的宝贵时间。
最佳答案
尝试以下操作:
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';
关于mysql - 在多个表中查找包含电子邮件的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51170175/