【问题标题】:Finding all rows with e-mails over multiple tables在多个表中查找包含电子邮件的所有行
【发布时间】:2018-07-04 09:22:22
【问题描述】:

我有一个包含多个表的数据库,其中包含一个电子邮件字段。现在,假设它们被称为 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';

这会导致语法错误。

我已经搜索了子查询,但我无法让这个查询工作。谁能帮帮我?

提前感谢您的宝贵时间。

【问题讨论】:

    标签: mysql sql subquery


    【解决方案1】:

    尝试以下方法:

    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';
    

    【讨论】:

    • 谢谢!有效。我不能为你的答案投票,因为我的声誉太少,但我将其标记为已解决(我需要等待 7 分钟,之后再做):)
    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2020-11-23
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多