使用 CASE 函数插入

问题描述 投票:0回答:1

所以我有这个正在使用的表,并创建了一个附加列(B 列)来区分某些值。 A 列是整数,我尝试使用 CASE 函数来识别它们各自的名称,然后将它们插入到 B 列中。我以为我的代码是正确的,但当我查询时它声称成功,但在 B 列中仅返回空值.我哪里出错了?

这是我当前的代码:

INSERT INTO astro(star_name)
SELECT 
CASE star_type
    WHEN 0 THEN 'Brown'
    WHEN 1 THEN 'Red_Dwarf'
    WHEN 2 THEN 'White_Dwarf'
    WHEN 3 THEN 'Main_Sequence'
    WHEN 4 THEN 'Supergiant'
    WHEN 5 THEN 'Hellagiant'
    ELSE 'Basic'
END
FROM astro

我期望 star_name 返回相应的名称,但相反,我只得到了一大堆奇怪的空值:/ 我感谢您的帮助社区,谢谢!

postgresql case sql-insert
1个回答
0
投票

您应该使用 UPDATE 来更改现有行。

UPDATE astro
SET star_name = CASE star_type
    WHEN 0 THEN 'Brown'
    WHEN 1 THEN 'Red_Dwarf'
    WHEN 2 THEN 'White_Dwarf'
    WHEN 3 THEN 'Main_Sequence'
    WHEN 4 THEN 'Supergiant'
    WHEN 5 THEN 'Hellagiant'
    ELSE 'Basic'
END

参见:DBFIDDLE

© www.soinside.com 2019 - 2024. All rights reserved.