在新列中键入先前的列值

问题描述 投票:0回答:4

我想要以下结果现有列,并具有一个添加结果

col1   newcol
---------------
 101   0/''/null
 102   101
 103   102
 104   103


 SELECT COL1, @a := @a AS col2
 FROM MYTABLE JOIN (SELECT @a := 0) t
 ORDER BY COL1;

我可以在第二列中获得上一个列值 到第一列

	

您可以使用

a
mysql sql
4个回答
2
投票
SELECT @a as Prev, @a:=COL1 as Current FROM MYTABLE ORDER BY COL1;

您可以在

MYSQL用户定义变量

中找到更多信息


我希望您会发现它有用。

edited

@a:

的初始化句子

SET @a=0; @a的第一个值将为null

这有点复杂,但是以下处理了:
SELECT COL1,
       (CASE WHEN (@oldprev := @prev) = NULL THEN NULL -- NEVER HAPPENS
             WHEN (@prev := col1) = NULL THEN NULL     -- NEVER HAPPENS
             ELSE @oldprev
        END) as prevcol
FROM MYTABLE CROSS JOIN
     (SELECT @prev := 0) params
ORDER BY COL1;

注意:

oldprev

2
投票
case

中使用。

SELECT T1.`col1` AS col1,
(IFNULL(T2.`col2`,0)) AS new_col
FROM
table_name T1 LEFT JOIN table_name T2 ON T1.`col1`=(T2.`col1` - 1)


您可以使用相关的子问题来做到这一点:

SELECT col1, (SELECT col1 FROM mytable AS t2 WHERE t2.col1 < t1.col1 ORDER BY col1 DESC LIMIT 1) AS newcol FROM mytable AS t1

0
投票
在这里demo


0
投票
注:

查询的工作时间很长,只要不包含任何重复。

您可以告诉我如何使结果不仅输出,而且还写入了新台?

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.