Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否从下面的行复制mysql行值?_Php_Mysql_Sql - Fatal编程技术网

Php 是否从下面的行复制mysql行值?

Php 是否从下面的行复制mysql行值?,php,mysql,sql,Php,Mysql,Sql,我的问题是: +------+--------------+ |SKU |图像| +------+--------------+ |123 |图片一| |空|图片11| |124 |图片二| |空|图片22| |125 |图片3| |空|图片33| +------+--------------+ 我需要这个: +-------+------+--------------+ |id | SKU |图像| +-------+------+--------------+ |123 | 123 |图片

我的问题是:

+------+--------------+
|SKU |图像|
+------+--------------+
|123 |图片一|
|空|图片11|
|124 |图片二|
|空|图片22|
|125 |图片3|
|空|图片33|
+------+--------------+
我需要这个:

+-------+------+--------------+
|id | SKU |图像|
+-------+------+--------------+
|123 | 123 |图片一|
|123 |空|图片11|
|124 | 124 |图片二|
|124 |空|图片22|
|125 | 125 |图片3|
|125 |空|图片33|
+-------+------+--------------+
如果行sku为空,我不想从下面的行复制sku值

我试过:

SELECT 
    * , 
    @lastid := sku, 
    IF( sku =  '', @lastid , sku ) AS id 
FROM table;

有什么想法吗

您可以使用过程来解决它

您可以创建一个过程来检查下一行并生成所需的内容。如果您有顺序ID,您可以在实际行ID中使用-1,或者创建一个函数来获取下面的行(这更有意义)。

注意: 这假设您的图像可以用于排序数据。。。。据我所知,它看起来像是递增的,这将是一个提供数据的可用顺序

select *, IF( sku IS NULL, @lastid , sku ) AS id, @lastid := sku
from temp
cross join(select @lastid := null)t
order by image;

什么列决定了表的顺序?SQL表表示无序集。除非列明确指定了顺序,否则没有“上一行”或“下一行”的概念。要修复查询的逻辑,请向后操作。。它应该是
SELECT*,如果(sku=NULL,@lastid,sku)作为id,@lastid:=表中的sku
这可以通过用户定义的变量来完成。。但问题是,我们无法给出具体的命令。使用过程太复杂了,您需要基于一个字段来正确排序。如果你不这样做,那是不可能的,因为你没有一个合乎逻辑的方法去做。最好的解决方案是,在这种情况下,可以创建一个名为order或类似的自动递增字段。因此,您有一个字段来创建此订单。但是如果你有其他的变量,使你无法使用这个专栏,你就是做不到。我知道。。但问题是使用程序太复杂了