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