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
答
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
#1109 - MULTI DELETE中的未知表格'current' – 2014-10-18 14:04:09
嗯。不知道这是什么意思。我现在更新了我的答案。你能否尝试“DELETE cur”而不是“DELETE'current'” – 2014-10-18 14:14:07
根据你的答案设法简化了一下。 删除当前 FROM'current' LEFT OUTER JOIN ..... – 2014-10-18 14:33:10