簡體   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