Mysql-删除第二个条目

Mysql-删除第二个条目,mysql,Mysql,我们有一个mysql数据库表,其中有一些需要删除的错误条目。帐户表包含以下字段:id、代码、用户id 基本上,对于每个帐户,每个用户在account表中应该只有一条记录。但是,目前,每个用户在account表中有两条记录,其中代码等于1000 对于account表中的每条记录,我需要删除第二行,其中每个用户的代码=1000 下面的查询提供了代码=1000的所有记录。它还包含account_detail表上的计数,以确认第二个错误条目在account_detail表中不包含任何子记录,并且已确认这

我们有一个mysql数据库表,其中有一些需要删除的错误条目。帐户表包含以下字段:id、代码、用户id

基本上,对于每个帐户,每个用户在account表中应该只有一条记录。但是,目前,每个用户在account表中有两条记录,其中代码等于1000

对于account表中的每条记录,我需要删除第二行,其中每个用户的代码=1000

下面的查询提供了代码=1000的所有记录。它还包含account_detail表上的计数,以确认第二个错误条目在account_detail表中不包含任何子记录,并且已确认这是正确的

SELECT a.*, COUNT(ad.id)
FROM account a
LEFT JOIN account_detail ad on a.id = ad.account_id
WHERE a.code = 1000
GROUP by a.id
ORDER BY a.user_id, a.id
因此,现在我基本上需要一个查询来删除account表中每个用户id的第二个错误条目,其中code=1000
DELETE greater
FROM   account AS lower JOIN account AS greater
    ON lower.code    = greater.code
   AND lower.user_id = greater.user_id
   AND lower.id      < greater.id
WHERE  lower.code    = 1000
从帐户越低加入帐户越大 在lower.code=greater.code上 并且lower.user\u id=更大的.user\u id 和较低的.id<较大的.id 其中lower.code=1000
不,不行。我们需要在code=1000的account表中为每个用户保留第一个条目,即使ad.account\u id为NULL@JonoB:如果第一条记录的
ad.account\u id也为空
,则两条记录的
account\u detail
中都没有相应的条目,对吗?在这种情况下,如何确定哪个是“第一个”记录,哪个是“第二个”记录?OP中的查询有一个order by子句:` order by a.user_id,a.id,因此第二个a.id将始终大于第一个。不过,通过使用第一个查询,然后在php中循环搜索结果并提取第二个帐户的id,我基本上解决了这个问题。谢谢你的帮助。@JonoB:很公平。或者也可以使用我上面修改过的答案。如果你发布了两个表中的一些样本数据,那就更好了。