将多行数据插入单个列
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,您的更新声明不会改变。
绝对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,您的更新声明不会改变。