[英]sql query entries that exist in another table
I have two tables: requests
( email
) , results
( email
, data
, processed_at
) 我有两个表: requests
( email
), results
( email
, data
, processed_at
)
I want to get an entry from results
that has processed_at = null
and an email which exists in requests
. 我想从具有processed_at = null
results
中获取一个条目,并在requests
中存在一封电子邮件。 My current approach is to use a join : 我当前的方法是使用联接 :
select `results`.* from `results`
inner join `requests` on `requests`.`email` = `results`.`email`
where `results`.`processed_at` is null limit 1
Unfortunately this is very slow. 不幸的是,这非常慢。 Is there a more efficient way to do this? 有没有更有效的方法可以做到这一点?
You could also use a subquery like: 您还可以使用类似以下的子查询:
SELECT results.*
FROM results
WHERE results.processed_at IS NULL
AND results.mail IN (SELECT DISTINCT requests.mail FROM requests)
LIMIT 1
However, I'm not sure if it's faster. 但是,我不确定它是否更快。
can you try this query 你可以试试这个查询
select 选择
res
.* from res
。*来自
results
res, requests
req results
资源, requests
where req
. 其中req
。 email
= res
. email
= res
。 email
and res
. 和res
。 processed_at
is null processed_at
为null
select results
.* from results
left join requests
on requests
. 选择results
。*从results
左连接requests
的requests
。 email
= results
. email
= results
。 email
where results
. email
results
。 processed_at
is null limit 1 processed_at
为空限制1
i am quite sure that this is much faster than inner join. 我很确定这比内部联接要快得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.