我有一个这样的表:
People
-----------------
email_address
created_date
我还有一个电子表格,其中包含大约 60,000 个电子邮件地址。我需要为电子表格中的每个电子邮件地址选择“created_date”。我目前处理它的方法是创建一个带有 IN 子句的大选择语句:
SELECT email_address, created_date FROM People WHERE email_address in (
'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="01747264733041726e6c647569686f662f626e6c" rel="noreferrer noopener nofollow">[email protected]</a>',
'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3643455344047645595b53425e5f58511855595b" rel="noreferrer noopener nofollow">[email protected]</a>',
'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="96e3e5f3e4a5d6e5f9fbf3e2fefff8f1b8f5f9fb" rel="noreferrer noopener nofollow">[email protected]</a>',
...
问题在于,它是一个巨大的脚本(60,000 多行),由于诸如“得到的数据包大于‘max_allowed_packet’字节”和“MSQL Server 已经消失”之类的错误,我什至无法运行它离开”。
我也许可以通过增加 max_allowed_packet 等来修复这些错误,但我有一种感觉,这可能只是我的 SQL 很糟糕的一个症状,而不是仅仅治疗症状,我应该解决问题并写得更好SQL。如果您有任何建议,请告诉我!
最佳答案
将电子邮件地址加载到单独的一栏表格中并使用
SELECT email_address, created_date FROM People
WHERE email_address IN (SELECT email_address FROM email_table)
关于mysql - 大 IN 语句 - 来自电子表格的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647775/