2012-11-29 28 views
0

我使用下面的查询删除离群值(1.5倍sd)。使用标准偏差删除离群值使用mysql

DELETE FROM sv_condition_sw 
WHERE snow_mountain > (
    SELECT AVG(snow_mountain)+1.5*STDDEV(snow_mountain) 
    FROM sv_condition_sw 
    WHERE lud='2012-11-28' AND res_id=769) 
AND lud='2012-11-28' 
AND res_id=769 

但是它给出了这样的错误:

查询:delete FROM sv_condition_sw WHERE snow_mountain > (SELECT AVG(snow_mountain)+1.5*STDDEV(snow_mountain) FROM sv_condition_sw WHER...

Error Code: 1093 
You can't specify target table 'sv_condition_sw' for update in FROM clause 

我不知道这意味着什么。

回答

2

你就可以欺骗的MySQL与另一个子查询

DELETE FROM sv_condition_sw 
WHERE snow_mountain > (select * from (SELECT AVG(snow_mountain)+1.5*STDDEV(snow_mountain) 
             FROM sv_condition_sw 
             WHERE lud='2012-11-28' 
             AND res_id=769) x) 
AND lud='2012-11-28' AND res_id=769 
做到这一点