0

itemimages各アイテムごとにテーブルにいくつかの行があります。デフォルトの画像があるはずなので、にisdefault設定されている列があります1。このクエリを実行しました:

select * from itemimages group by itemid having sum(isdefault) = 0;

驚いたことに、デフォルトの画像を持たないアイテムがたくさんありました。これらのアイテムを更新して、行の 1 つ (どちらを気にする必要はありません) が取得されますがisdefault set to 1、他の行は取得されません (正確には1つは持っていisdefault = 1て、残りは持っていますisdefault = 0)?

テーブルは次のようになります。

+--------+---------+-----------+
| itemid | imageid | isdefault |
+--------+---------+-----------+
|    115 |     167 |         0 |
|    118 |     176 |         0 |
|    128 |    9619 |         0 |
|    132 |     203 |         0 |
|    135 |    8040 |         0 |
|    141 |     223 |         0 |
|    146 |     232 |         0 |
|    148 |     239 |         0 |
|    153 |     256 |         0 |
|    164 |     285 |         0 |
+--------+---------+-----------+
4

1 に答える 1

1

テーブルのスキーマを表示できないとは言い難いですが、このようなものを探していると思います

UPDATE itemimages i JOIN
(
    SELECT MIN(imageid) imageid
      FROM itemimages
     GROUP BY itemid
    HAVING SUM(isdefault) = 0
) q ON i.imageid = q.imageid
   SET isdefault = 1

これがSQLFiddleのデモです

于 2013-05-24T04:56:02.520 に答える