将多行数据插入单个列

Inserting multiple rows of data into a single column

绝对SQL初学者:

我有一个 table 'students' 列 'id'(主键)、'name' 和 'mark'。

我现在正在尝试为一些学生添加分数。只需使用多个更新语句,如

    UPDATE students SET mark = 4.1 WHERE id = 1;
    UPDATE students SET mark = 1.8 WHERE id = 2;
    UPDATE students SET mark = 2.7 WHERE id = 3;
    UPDATE students SET mark = 3.5 WHERE id = 4;
    ...and so on

看起来相当乏味和劳动密集型。使用 MS SQL 执行此类操作的最简单优雅的方法是什么?

首先我想说你的代码是完全没问题的。也就是说,在我看来这可能更漂亮一些:

UPDATE students SET mark = CASE id
    WHEN 1 THEN 4.1
    WHEN 2 THEN 1.8
    WHEN 3 THEN 2.7
    WHEN 4 THEN 3.5
END;

但同样没有必要让它变得比你做的更复杂。 SQL 更多的是编写快速准确的代码,而不是让它漂亮。

此外,欢迎来到 Stack Overflow!

创建一个新的 temp table,并将您的所有值插入 table:

INSERT INTO grades (id, mark) VALUES ( 1, 4.1);
INSERT INTO grades (id, mark) VALUES ( 2, 1.8);
...

现在您只需加入

UPDATE students
       JOIN grades
       ON students.id = grades.id
SET students.mark = grades.mark;

这里的优点是,除了建立新的成绩 table,您的更新声明不会改变。