当尝试运行以下查询时,我得到一个"无效的语法";错误。
set @maxid = (select max(id) from Seat);
select case
when id % 2 = 0 then id-1
when id = @maxid then id
else id+1 end as id, student from Seat
group by id, student
order by id
完整的错误信息
你有一个错误的SQL语法;查看手册对应于MySQL服务器版本,以便使用正确的语法Near 'select case当id % 2 = 0时,则id % 1当id = @maxid时,id' at第7行
奇怪的是,如果我单独运行SET
语句(不含SELECT
语句)或SELECT
语句(不含SET
语句),它们都执行成功。
您可以通过与设置变量的子查询连接将这些查询合并为单个查询。
SELECT
CASE
WHEN id % 2 == 0 THEN id - 1
WHEN id = @maxid THEN id
ELSE id + 1
END AS id,
student
FROM Seat
CROSS JOIN (SELECT @maxid := MAX(id) FROM Seat)
ORDER BY id