mysql - 如何从帐户表中检查和提取多封电子邮件的数据?
问题描述
我有大约 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)
);
在不循环数组的情况下实现这一目标的最佳方法是什么?
解决方案
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