我有一张表seat
,需要根据给定条件打印一些数据。由于无法描述的语法错误,我无法执行查询,也无法推断出其背后的原因。
这是我的查询,生成语法错误:
select (case id when mod(id, 2)=0 then id=id+1
when mod(id,2) <> 0 and id != (select count(*) from seat) then id=id-1
else id=id) as id,
student
from seat;
错误是:
您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第2行的')用作id,学生从座位'附近使用
任务是切换相邻行的(特定列的)值。完整的问题可用here。
答案 0 :(得分:1)
您无需在CASE
表达式中的值中指定输出变量。另外,在CASE
条件下使用逻辑表达式时,您不应该指定WHEN
的输入,并且END
缺少CASE
。尝试以下方法:
select case when mod(id, 2) = 0 then id-1
when mod(id, 2) <> 0 and id != (select count(*) from seat) then id+1
else id
end as id,
student
from seat
order by id;
输出(针对leetcode问题)
id student
1 Doris
2 Abbot
3 Green
4 Emerson
5 Jeames