我的问题:
+------+--------------+
| SKU | Image |
+------+--------------+
| 123 | bild 1 |
| NULL | bild 11 |
| 124 | bild 2 |
| NULL | bild 22 |
| 125 | bild 3 |
| NULL | bild 33 |
+------+--------------+
我需要这个:
+-------+------+--------------+
| id | SKU | Image |
+-------+------+--------------+
| 123 | 123 | bild 1 |
| 123 | NULL | bild 11 |
| 124 | 124 | bild 2 |
| 124 | NULL | bild 22 |
| 125 | 125 | bild 3 |
| 125 | NULL | bild 33 |
+-------+------+--------------+
如果行sku为NULL,我想从下面的行复制sku值。
我试过了:
SELECT
* ,
@lastid := sku,
IF( sku = '', @lastid , sku ) AS id
FROM table;
有什么想法吗?
答案 0 :(得分:0)
您可以使用程序解决它。
您可以创建一个检查以下行并制作所需内容的过程。你是否有顺序ID,你可以在你的实际行id中创建一个-1,或者创建一个函数来让它在行下面(这更有意义)。
答案 1 :(得分:0)
注意: 这假设您的图像可用于订购数据....从我可以看出它看起来像是递增的,这将是一个可用的订单与提供的数据
select *, IF( sku IS NULL, @lastid , sku ) AS id, @lastid := sku
from temp
cross join(select @lastid := null)t
order by image;