从下面的行复制mysql行值?

时间:2014-08-25 15:00:17

标签: php mysql sql

我的问题:

+------+--------------+
|  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;

有什么想法吗?

2 个答案:

答案 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;

DEMO