0

削除する必要がある誤ったエントリを含む mysql データベース テーブルがあります。アカウント テーブルには次のフィールドがあります: id、code、user_id

基本的に、各ユーザーは、各アカウントのアカウント テーブルに 1 つのレコードのみを持つ必要があります。ただし、現時点では、各ユーザーのアカウント テーブルには、コードが 1000 に等しい 2 つのレコードがあります。

アカウント テーブルのすべてのレコードについて、各ユーザーのコード = 1000 である 2 行目を削除する必要があります。

次のクエリでは、コード = 1000 のすべてのレコードが返されます。2 番目のエラー エントリに 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

したがって、基本的に、コード = 1000 のアカウント テーブル内の各 user_id の 2 番目の誤ったエントリを削除するクエリが必要です。

4

1 に答える 1

0
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
于 2012-05-16T11:04:52.480 に答える