【问题标题】:Query MySQL database find missing email addresses查询 MySQL 数据库查找丢失的电子邮件地址
【发布时间】:2022-01-26 07:16:38
【问题描述】:

我正在尝试从给定列表中提取电子邮件地址,保留在 MySql 数据库中。我的查询:

SELECT * 
FROM users 
WHERE `user_email` IN ('myemail@email.com', 'my2email@email.com', 'my3email@email.com')

前两个电子邮件地址在数据库中,但最后一个不在。我的目标是打印在数据库中的电子邮件。这怎么可能?

【问题讨论】:

  • 要检查的电子邮件列表必须是行集,而不是文字列表。

标签: mysql sql database


【解决方案1】:
SELECT * 
FROM (SELECT 'myemail@email.com' user_email
      UNION ALL
      SELECT 'my2email@email.com'
      UNION ALL
      SELECT 'my3email@email.com') emails_to_check_for
LEFT JOIN users USING (user_email)
WHERE users.user_email IS NULL;

【讨论】:

  • 如果我必须检查数千个电子邮件地址怎么办?
  • @IntoTheDeep 将它们保存到临时表并使用而不是子查询。 CREATE TEMPORARY TABLE emails_to_check_for (user_email VARCHAR(255));
【解决方案2】:

创建一个临时表并插入您要检查的所有电子邮件 ID

create table check_emailid(email_id varchar(255))

insert into check_emailid(email_id )
values('myemail@email.com') 
values('my2email@email.com')
values('my3email@email.com')

select * 
from check_emailid 
where email_id not in (SELECT user_email
                       FROM users)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多