我正在研究一个关于SQL的表,我需要根据表中其他2列的值填写一个新列。
规则是: - 如果Row id = 1,则新列= 1,并且该行的组ID具有更多具有相同组ID的行(参见图片) - 如果Row id> = 2,则新列= 2 - 其他任何东西都会使新列0
这是我更新新列的查询:
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
我想知道是否有更好更有效的方式来更新新列,因为我觉得在select中调用表来计算组ID的数量似乎不正确?
由于
答案 0 :(得分:0)
获取表级而非行的计数会更快。
删除了void load_gdt(struct gdt_ptr *gdt_ptr, unsigned int data_sel, unsigned int code_sel);
表达式的一个级别 - 这可能不会改变任何东西,但它对我的眼睛来说有点清洁。
.intel_syntax noprefix