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或类似的自动递增字段。因此,您有一个字段来创建此订单。但是如果你有其他的变量,使你无法使用这个专栏,你就是做不到。我知道。。但问题是使用程序太复杂了