繁体   English   中英

MYSQL如何将虚拟列添加到现有表中

[英]MYSQL How to add virtual column into existing table

我在下面有这个'data'表,其中包含'INITIAL','BETWIXT','ENDING'列,其中插入了值;

SET SQL_SAFE_UPDATES = 0;

CREATE TABLE data (
    INITIAL INT NOT NULL,
    BETWIXT INT NOT NULL,
    ENDING VARCHAR(20)
);

INSERT 
    INTO data(data.INITIAL,data.BETWIXT,data.ENDING) 
    VALUES
    (30,40,"N0"), 
    (60,80,"N1"), 
    (90,120,"N2"),
    (120,160,"N3"),
    (150,200,"N4"); 

SELECT DISTINCT ENDING AS "HI"
    FROM data
    WHERE data.INITIAL BETWEEN 60 AND 150;

但我正在接近将“HI”虚拟列插入主表“数据”,因此可以将其可视化为

INITIAL  BETWIXT  ENDING  HI 

30       40      N0     N1

60       80      N1     N2

90       120     N2     N3

120      160     N3     N4
 
150      200     N4

我如何编写代码来构建上述内容,而不仅仅是单个虚拟列?

您是否希望在 HI 列中获取结束列的下一个值。 如果是这样,可以使用 LEAD。

select initial,BETWIXT,ending,lead(ending) over (order by initial) hi from data;

在这里参考小提琴。

您的输出示例不正确,因为第一行您应该得到一个空值,而不是“N1”。 关于您的问题,只需列出查询中的所有列:

select t.initial,
t.betwixt,
t.ending,
case when t.initial between 60 and 150 then t.ending else NULL end as 'HI'
from data t;

如果您确实需要间隔为 1 步的输出,请参阅@Pankaj 帖子中的代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM