CASE WHEN mySQL 不断出错
CASE WHEN mySQL keeps getting error
我正在尝试使用 CASE 语句,但我一直收到语法错误。我遵循了 docs 但我似乎无法摆脱这个语法错误:
查询:
SELECT students.firstname, students.lastname, students.tnumber, grades.tnumber
FROM students, grades
CASE WHEN grades.tnumber=students.tnumber AND grades.courseid='CSC2110' AND (grades.Grade='A' OR grades.Grade='B' OR grades.Grade='C')THEN 'YES' ELSE 'NO' END
错误:
error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHEN grades.tnumber=students.tnumber AND grades.courseid='CSC2110' A' at line 1
忽略表格和select 语句。我更关心的是检查我的 CASE 语句的语法以及它抛出错误的原因。
不完全清楚您希望 CASE
表达式做什么,但它似乎应该在 SELECT
列表中。我还将奇怪地出现在 CASE
表达式中的连接条件移到了 ON
子句中。
SELECT students.firstname,
students.lastname,
students.tnumber,
grades.tnumber,
CASE WHEN grades.courseid = 'CSC2110' AND
(grades.Grade='A' OR grades.Grade='B' OR grades.Grade='C')
THEN 'YES' ELSE 'NO' END AS someColumn
FROM students
INNER JOIN grades
ON grades.tnumber = students.tnumber
您也可以尝试使用 proper
和 readable
语法:
SELECT
s.tnumber, s.firstname, s.lastname,
IF (
-- condition
grades.Grade = 'A' OR grades.Grade = 'B' OR grades.Grade = 'C',
-- if true
'YES',
-- else
'NO'
) `status`
FROM
students s
INNER JOIN grades g ON g.tnumber = s.tnumber
WHERE grades.courseid = 'CSC2110';
备注
你可以在我包含的 WHERE
部分中轻松地与其他 courseid
重用此代码
我在呈现数据时还添加了一个suggested
格式,这是给人们看的,总是把id
代码放在前面
还有一点是,通过使用 proper
格式,它可以帮助您和其他人 understand
您的代码
我正在尝试使用 CASE 语句,但我一直收到语法错误。我遵循了 docs 但我似乎无法摆脱这个语法错误: 查询:
SELECT students.firstname, students.lastname, students.tnumber, grades.tnumber
FROM students, grades
CASE WHEN grades.tnumber=students.tnumber AND grades.courseid='CSC2110' AND (grades.Grade='A' OR grades.Grade='B' OR grades.Grade='C')THEN 'YES' ELSE 'NO' END
错误:
error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHEN grades.tnumber=students.tnumber AND grades.courseid='CSC2110' A' at line 1
忽略表格和select 语句。我更关心的是检查我的 CASE 语句的语法以及它抛出错误的原因。
不完全清楚您希望 CASE
表达式做什么,但它似乎应该在 SELECT
列表中。我还将奇怪地出现在 CASE
表达式中的连接条件移到了 ON
子句中。
SELECT students.firstname,
students.lastname,
students.tnumber,
grades.tnumber,
CASE WHEN grades.courseid = 'CSC2110' AND
(grades.Grade='A' OR grades.Grade='B' OR grades.Grade='C')
THEN 'YES' ELSE 'NO' END AS someColumn
FROM students
INNER JOIN grades
ON grades.tnumber = students.tnumber
您也可以尝试使用 proper
和 readable
语法:
SELECT
s.tnumber, s.firstname, s.lastname,
IF (
-- condition
grades.Grade = 'A' OR grades.Grade = 'B' OR grades.Grade = 'C',
-- if true
'YES',
-- else
'NO'
) `status`
FROM
students s
INNER JOIN grades g ON g.tnumber = s.tnumber
WHERE grades.courseid = 'CSC2110';
备注
你可以在我包含的
WHERE
部分中轻松地与其他courseid
重用此代码
我在呈现数据时还添加了一个
suggested
格式,这是给人们看的,总是把id
代码放在前面还有一点是,通过使用
proper
格式,它可以帮助您和其他人understand
您的代码