我无法从以下查询中删除嵌套部分:
SELECT DISTINCT * FROM `audit` WHERE action_performed = 'REJECTED' AND `event_id` IN (
SELECT DISTINCT event_id AS `Count`
FROM `audit`
WHERE username = 'someUser'
AND action_performed IN ('SUBMITTED_FOR_APPROVAL', 'SAVED_AND_APPROVED')
AND (action_timestamp >= '2012-01-12 00:00:00' AND action_timestamp <= '2012-01-24 23:59:59'))
基本上,我试图获取用户之前提交的被拒绝事件的数量。我通过
action_performed
列来确定这一点,该列的值如下SUBMITTED_FOR_APPROVAL
、SAVED_AND_APPROVED
和REJECTED
。我之所以要删除嵌套部分,是因为
audit
表当前包含超过100k行,而嵌套查询本身的结果约为2000行,因此查询总是超时。我试过在网站上搜索,并按照一些问题中的建议进行内部连接,但可能我做错了!
谢谢您。
编辑-表结构如下
Field Type
id int(11)
username varchar(100)
event_id int(11)
action_performed varchar(100)
action_timestamp timestamp
最佳答案
SELECT DISTINCT adata.*
FROM `audit` AS adata
INNER JOIN `audit` AS aselector ON adata.event_id=aselector.event_id
WHERE
adata.action_performed = 'REJECTED'
AND aselector.username = 'someUser'
AND aselector.action_performed IN ('SUBMITTED_FOR_APPROVAL', 'SAVED_AND_APPROVED')
AND aselector.action_timestamp >= '2012-01-12 00:00:00'
AND aselector.action_timestamp <= '2012-01-24 23:59:59'
;
关于mysql - 从SELECT查询中删除嵌套部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8987392/