我需要根据另一行更新新创建的行的值。在本例中,我需要创建一个名为荣誉_level的新列,并根据学生的gpa用不同的字符串填充它。这需要使用SELECT
和UNION
语句来完成。但我不确定是否应该使用ALTER TABLE
命令创建新列,或者是否可以在单独的SELECT语句中创建新列。我只需要找到一种方法,根据学生的GPA将正确的字符串分配给新创建的列。
SELECT first_name, last_name, email, cGPA AS "1st Class Honor"
FROM Student
WHERE cGPA > 3.9;
UNION
SELECT first_name, last_name, email, cGPA AS "2nd Class Honor"
FROM Student
WHERE cGPA >= 3.7 AND cGPA < 3.9;
UNION
SELECT first_name, last_name, email, cGPA AS "3rd Class Honor"
FROM Student
WHERE cGPA >= 3.5 AND cGPA < 3.7;
UNION
SELECT first_name, last_name, email, cGPA AS "On track to graduate"
FROM Student
WHERE cGPA < 3.5 AND cGPA > 2.0;
2条答案
按热度按时间3zwjbxry1#
如果荣誉级别 * 总是 * 从cgpa派生,您还可以考虑使用派生列:
不需要更新-始终派生值,并且无法插入/更新列。
xfb7svmp2#
我不确定是否应该使用ALTER TABLE命令创建新列,或者是否可以在单独的SELECT语句中创建新列
这取决于你真正需要的结果。
如果只想选择这些值,那么
select
就是:如果要将值存储到新列中,则必须先添加该列(如果该列不存在),然后更新其内容:
或者,您可以创建一个视图,这样您就不必重新编写相同的代码(也不必在
cgpa
更改时更新honor_level
):