题目链接:
解析:
本题是一个交换的问题,比较复杂,首先根据题目要求可以知道当id为奇数时需要变为其id+1的部分,而当id为偶数时,需要变为其id-1的部分,但是这里面有一个特例,就是最后一个id,其实题目中的Note已经给了我们提示,所以我们需要首先求出seat表的行数,从而判断最后一个id是否需要进行转换。
再整理一下思路,当id为奇数,并且不是最后一个时,变为id+1;当id为奇数,并且是最后一个时,保持不变;其他情况下id为偶数,则需要变为id-1;
这就需要我们使用CASE ... WHEN... THEN... ELSE... END
语句。具体使用见题解。
题解:
# Write your MySQL query statement below
SELECT
(CASE
WHEN MOD(id,2)!=0 AND id != counts THEN id+1
WHEN MOD(id,2)!=0 AND id = counts THEN id
ELSE id-1
END
) AS id, student
FROM seat, (SELECT COUNT(*) AS counts FROM seat) AS seat_counts
ORDER BY id;