sql - 根据另一列填充一列

标签 sql

我正在尝试为考试制作一个表格,它看起来像:
ExamID | Name | Points | Grade
其中 Points 等于 0 到 100 之间的某个值。现在我想根据 Points 的值自动设置 Grade 的值。如果 > 90 等级=A...

执行此操作的 sql 查询的基本语法是什么 ?无论如何,我会根据我的需要调整它。

尝试使用 CASE 语法,但无法做到。我猜我应该使用 UPDATE 查询,而不是 INSERT 查询。

最佳答案

您可以使用计算列。创建表后 没有 Grade列,您可以添加这样的计算列(这应该至少适用于 SQL Server ,但您可能需要在其他 DBMS 的 sql 上找到差异):

ALTER TABLE Exams
  ADD Grade AS
    CASE
      WHEN (Points > 90) THEN 'A'
      WHEN (Points > 70) THEN 'B'
      WHEN (Points > 50) THEN 'C'
      ELSE 'D'
    END

根据您的 DBMS,您可能希望使用 触发器 用于插入和更新,但触发器的语法在很大程度上取决于您使用的系统。

如果Grade只是计算出来的,你真的不需要存储它,你可以使用 View相反,或者在查询表时直接创建它并且没有 Grade列。

关于sql - 根据另一列填充一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27352332/

相关文章:

mysql - 使用 mysqldump 时跳过或忽略临时表

sql - Postgres 地理定位点距离

php - 拉维尔 5 : Eloquent & form model for business hours

php - 查找最早日期 - PHP

php - 在 CodeIgniter 中得到一个带有子字符串的字符串

php - 无法在网页上显示图像,图像路径存储在数据库中

mysql - 获取指定商品中最畅销的商品

sql - 使用每个外键的最大日期更新多行

SQL - 如何通过连接将不同表中的 2 个日期合并在一起而不会出现错误

SQL 查询根据聚合条件(列的总和)获取结果