我在下面有'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"虚拟列插入到主表"data"中,以便将其可视化为

INITIAL  BETWIXT  ENDING  HI 

30       40      N0     N1

60       80      N1     N2

90       120     N2     N3

120      160     N3     N4
 
150      200     N4

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

推荐答案

您的输出示例不正确,因为对于第一行,您应该得到一个空值,而不是"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 post中的代码

Mysql相关问答推荐

try 使用TypeORM创建新表时出现SQL语法错误

为分组记录MySQL取取值为TRUE的单行

Eloquent:通过国外模型得到平均分

如何找到每个user_id每个产品的买家类型数量?

即使在某些表中不匹配,如何从 MySQL 中的多个表中 Select 所有记录

MySQL 在第一个匹配行后停止搜索 N 行(不是 LIMIT)

如何优化使用多个 LEFT JOIN 和 GROUP BY 子句的慢速 MySQL 查询?

为什么 MySQL 不使用索引进行简单的SELECT * FROM Table WHERE field='value'查询?

MySql,如何从列中替换某种格式的字符串

使用另一个表中的值更新一个表中的值

MYSQL REGEXP_REPLACE 在数字之后

MySQL 查询组按日期(12 小时间隔)

MySQL查询根据同一表中其他字段的值更新表中的字段

MySQLi count(*) 总是返回 1

在 Yii2 中执行原始 SQL 查询?

如何将数组存储到mysql中?

当运行 UPDATE ... datetime = NOW();所有更新的行都会有相同的日期/时间吗?

MySQL 更新连接表

MySQL连接查询使用like?

MySQL中的base64编码