-1

私はそのようなテーブルを持っています

+-------------------------------------+
| Description | ID  |  Show(1 or 0)   |
+-------------------------------------+

同じ説明のエントリがたくさんありますが、そのうちの 1 つは ID が null です。null のないすべての行で show を 0 に設定する必要がありますが、同じ説明の行が 2 行以上ある場合に限ります。私は SQL を初めて使用し、約 50K 行あるため、手動では実行したくありません。

米国 987655 1 - 0 に変更

米国 987658 1 - 0 に変更

米国 987617 1 - 0 に変更

米国 989876 null - 変更なし

CAN 767655 1 - 変更なし

CAN 957655 1 - 変更なし

試しました:

UPDATE  test1 t1,
    (
    SELECT  id, description, show AS mid
    FROM    test1 ti
    GROUP BY
            description
    ) tm
SET     show = 0
WHERE   t1.description= tm.description
    AND id is not null;

前もって感謝します

4

2 に答える 2

1

相関サブクエリが必要です。私はこれをテストしていないので、注意して使用してください。しかし、このようなものはあなたが求めているものかもしれません.

UPDATE
  some_table st1
  JOIN (
    SELECT st2.description, count(*) c
    FROM some_table st2
    WHERE
      st1.description = st1.description AND
      st1.id IS NOT NULL AND
      st2.id IS NOT NULL
    GROUP by st2.description
    HAVING c > 1
  ) AS tmp ON tmp.description = st1.description
SET st1.show = 0
于 2013-03-12T00:58:36.810 に答える