根据表数据更新表中的列

时间:2018-03-22 21:32:27

标签: sql sql-update

我正在研究一个关于SQL的表,我需要根据表中其他2列的值填写一个新列。

规则是:   - 如果Row id = 1,则新列= 1,并且该行的组ID具有更多具有相同组ID的行(参见图片)   - 如果Row id> = 2,则新列= 2   - 其他任何东西都会使新列0

enter image description here

这是我更新新列的查询:

UPDATE t1 SET t1.New_Column = CASE WHEN t1.RowID >= 2 THEN 2 
                                    ELSE CASE WHEN t1.RowID = 1 and (SELECT count(*) FROM dbo.__test1 as t2 WHERE t2.GroupID = t1.GroupID) > 1 
                                    THEN 1 ELSE 0 END END   from dbo.__test1 as t1

结束表结果(正确): enter image description here

我想知道是否有更好更有效的方式来更新新列,因为我觉得在select中调用表来计算组ID的数量似乎不正确?

由于

1 个答案:

答案 0 :(得分:0)

获取表级而非行的计数会更快。

删除了void load_gdt(struct gdt_ptr *gdt_ptr, unsigned int data_sel, unsigned int code_sel); 表达式的一个级别 - 这可能不会改变任何东西,但它对我的眼睛来说有点清洁。

.intel_syntax noprefix