SQL根据同一个表中的查询删除行吗?

问题描述:

鉴于此查询:SQL根据同一个表中的查询删除行吗?

SELECT cur.`id` 
FROM `current` AS cur 
LEFT OUTER JOIN (
    SELECT MAX(EndDay_id.id) as id, EndDay_id.server_id 
    FROM current as EndDay_id 
    GROUP BY server_id, gameday 
    ) AS EndDay 
ON cur.id = EndDay.id 
WHERE EndDay.id IS null 

如何从表中删除行“当前”的ID字段是在以前的查询结果集?

试试这个

DELETE cur FROM `current` AS cur 
LEFT OUTER JOIN (
    SELECT MAX(EndDay_id.id) as id, EndDay_id.server_id 
    FROM current as EndDay_id 
    GROUP BY server_id, gameday 
    ) AS EndDay 
ON cur.id = EndDay.id 
WHERE EndDay.id IS null 

我测试了它,这应该工作:http://sqlfiddle.com/#!2/a47c81

+0

#1109 - MULTI DELETE中的未知表格'current' – 2014-10-18 14:04:09

+0

嗯。不知道这是什么意思。我现在更新了我的答案。你能否尝试“DELETE cur”而不是“DELETE'current'” – 2014-10-18 14:14:07

+0

根据你的答案设法简化了一下。 删除当前 FROM'current' LEFT OUTER JOIN ..... – 2014-10-18 14:33:10

delete current 
where id in (SELECT cur.`id` 
FROM `current` AS cur 
LEFT OUTER JOIN (
SELECT MAX(EndDay_id.id) as id, EndDay_id.server_id 
FROM current as EndDay_id 
GROUP BY server_id, gameday 
) AS EndDay 
ON cur.id = EndDay.id 
WHERE EndDay.id IS null) 
+0

#1093 - 您不能指定目标表 '当前' 的更新在FROM子句 – 2014-10-18 14:01:58