根据另一列填充一列

Wha*_*hat 6 sql

我正在尝试为考试制作一个表格,它看起来像:

ExamID | Name | Points | Grade

其中 Points 等于 0 到 100 之间的某个值。现在我想根据 Points 的值自动设置 Grade 的值。如果 > 90 等级=A...

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

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

Jcl*_*Jcl 7

您可以使用计算列。创建没有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
Run Code Online (Sandbox Code Playgroud)

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

如果Grade只是计算出来并且您实际上不需要存储它,则可以使用 aView代替,或者在查询表时直接创建它并且根本没有列Grade


sza*_*ani -3

首先构建架构

**TABLE**

CREATE TABLE Examgrades 
    (
     Examid int auto_increment primary key, 
     Name varchar(20), 
     points int,
     Grade varchar(1)
    );

**INSERT RECORDS**

INSERT INTO Examgrades
(Name, points)
VALUES
('Email', 91),
('Twitter', 80);

**YOUR UPDATE**

update  Examgrades
set Grade = 'A'
where points >90;
Run Code Online (Sandbox Code Playgroud)

http://sqlfiddle.com/#!2/d3fd3f/1