采用:
DELETe FROM TABLE t1 JOIN (SELECt MAX(jobPositonId) AS max_id FROM TABLE) t2 WHERe t1.jobPositonId = t2.max_id
请注意,如果存在重复,则将删除 所有 具有该
jobPositonId值的行。
关于1093错误的愚蠢之处在于,您可以通过在自引用之间放置一个子查询来解决它:
DELETe FROM TABLE WHERe jobPositonId = (SELECt x.id FROM (SELECt MAX(t.jobPostionId) AS id FROM TABLE t) x)
说明
MySQL仅在使用
UPDATE&
DELETE语句时检查是否存在正在更新的同一表的一级子查询。这就是为什么将其放在第二级(或更深层)的子查询替代项中的原因。但这只是检查子查询-
JOIN语法在逻辑上是等效的,但不会触发错误。



