代码之家  ›  专栏  ›  技术社区  ›  Michael

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

  •  1
  • Michael  · 技术社区  · 6 年前

    我有一个包含电子邮件字段的多个表的数据库。现在,假设它们被称为表1、表2和表3。

    我想要一个查询,在所有行、所有表上查找特定的域(.'.'.'.@domain.com)。

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

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

    这将返回表1、表2、表3的列表。

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

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

    这将返回表1中电子邮件以域结尾的所有行的列表。

    我要查找的是一个将表1、表2和表3的结果组合在一个列表中的查询。我认为会起作用的是:

    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 回复  |  直到 6 年前
        1
  •  3
  •   Ankur Patel    6 年前

    请尝试以下操作:

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