首页 > 解决方案 > 如何从帐户表中检查和提取多封电子邮件的数据?

问题描述

我有大约 1,000 封电子邮件['a@a.com', 'b@b.com', ..., 'zz@zz.com']需要检查。如果帐户表中存在电子邮件,我需要提取与帐户表中的电子邮件匹配的行的名字和姓氏。

帐户表如下所示:

CREATE TABLE account (
   id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
   email VARCHAR(255) NOT NULL,
   first_name VARCHAR(255),
   last_name VARCHAR(255)
);

在不循环数组的情况下实现这一目标的最佳方法是什么?

标签: mysqlarrays

解决方案


IN()首先,使用语法提取与电子邮件匹配的所有值。

其次,GROUP通过电子邮件删除重复值。

第三,通过聚合仅获取最低值(第一个)MIN()

四、selfJOIN带过滤id

SELECT * FROM account t1
JOIN (
    SELECT MIN(id) FROM account
    WHERE email IN ('a@a.com', 'b@b.com', ...)
    GROUP BY email
) t2 ON t2.id = t1.id

推荐阅读