Mysql "not in"选择问题

标签 mysql

我只需要在一张表中找到所有今天参加比赛的人,而不是前几天的获胜者...

我的查询是:

SELECT Email,FName,Name,ID 
FROM `voucher_registrations` 
WHERE DATE_FORMAT(`Date_Submitted`,'%Y-%c-%d') = curdate() 
and Email not in (select email 
                  from `voucher_registrations` 
                  where winner=1)

有问题...当我尝试执行查询时,mysql 没有响应(表中大约有 7000 行)

有什么想法吗?或者另一种方式来进行这种查询?

尼古拉斯

最佳答案

您可以在电子邮件字段上添加索引以加快查询速度,并在子查询中选择“DISTINCT”电子邮件以减少搜索值:

SELECT Email,FName,Name,ID 
FROM `voucher_registrations` 
WHERE Date_Submitted = CURDATE()
  AND Email not in 
    (SELECT DISTINCT Email FROM`voucher_registrations` WHERE winner=1)

关于Mysql "not in"选择问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918042/

相关文章:

php - 根据日期获取总金额

mysql - 在 Sql 中选择 distinct、count 和 group By

sql - 帮助索引

mysql - 对具有相互关联的行的 SQL 表进行排序

php - MySQL查询排序正确信息

php - 计算 pma 中的查询执行时间

用于数字的 Mysql 正则表达式

sql - 使用 MySQL 从 Ubercart 表中提取 Drupal 编码数据

php - 从序列化数组 MySQL 中检索特定值

mysql - linux:使用 bash 工具从表中删除全文