0

itemimages每个项目我在表中有几行。应该有一个默认图像,所以有一列isdefault设置为1. 我运行了这个查询:

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

令我惊讶的是,我得到了很多没有默认图像的项目有没有办法更新这些项目,以便其中一行(我真的不在乎哪一行)得到isdefault set to 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 回答