这是基于我的previous question。用最大删除
我有以下表
表1
JobPositionId | JobPositionName
1 | Sound
2 | Lights
3 | Sound
4 | Ground
如何删除三排(名称=声音,和最大位置)
这是基于我的previous question。用最大删除
我有以下表
表1
JobPositionId | JobPositionName
1 | Sound
2 | Lights
3 | Sound
4 | Ground
如何删除三排(名称=声音,和最大位置)
用途:
DELETE FROM TABLE t1
JOIN (SELECT x.jobpositionname,
MAX(jobPositonId) AS max_id
FROM TABLE x
GROUP BY x.jobpositionname) t2
WHERE t1.jobPositonId = t2.max_id
AND t1.jobpositionname = t2.jobpositionname
AND t2.jobpositionname = 'Sound'
As I mentioned in your previous question,使用该不会触发一个MySQL 1093错误:
DELETE FROM TABLE
WHERE JobPositionId = SELECT x.id
FROM (SELECT MAX(JobPositionId) AS id
FROM TABLE
WHERE JobPositionName = 'Sound') x
已更新 - 在第二个子查询中忘记了列别名。 – 2010-09-01 20:30:28
DELETE FROM
Table1
WHERE
JobPositionId = (
SELECT
MAX(JobPositionId)
FROM
Table1
WHERE
JobPositionName = 'Sound'
)
MySQL错误1093 - 无法在FROM子句中指定更新的目标表 – 2010-09-01 20:24:07
真的吗?愚蠢的MySQL。我记得有一些解决方法,但我忘记了它是什么。 – Hammerite 2010-09-01 21:58:46
很抱歉,如果这并未”不要考虑你的“以前的问题”,我只是看看这个问题。
DELETE FROM Table1 WHERE jobpositionid = (SELECT MAX(jobpositionid) FROM table1 WHERE name = 'Sound');
好的,其他答案更好 - 它们的格式比我的好得多。 :) – MikeTheReader 2010-09-01 20:23:15
MySQL错误1093 - 无法在FROM子句中指定用于更新的目标表 – 2010-09-01 20:23:43
好像你正在试图做的是删除所有重复JobPositionNames,只留下JobPositionId最低的那个。
我不得不近期做了类似的事情,发现SQL语句变得如此复杂,在SQL中执行它要容易得多(如果效率低得多)。
因此,如果这是一个您正在尝试清理的数据库,只需编写一个脚本来完成这个任务并完成它(并设置一些独特的索引以防止它再次发生)。
如果这种情况一直发生,需要定期完成,请修复执行此操作的代码。
你应该链接你以前的问题,让其他人知道你在说什么。 ;) – 2010-09-01 20:22:55
你的问题不清楚。你应该考虑改进它,以便人们可以帮助你。 – 2010-09-01 20:33:30