[英]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.