2014-10-18 84 views
1

鑑於此查詢: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字段是在以前的查詢結果集?

回答

0

試試這個

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

0
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