题目:
思路:
这道题是要求邻近的座位互换,如果最后一位的id是奇数,就不换。这道题的难点就是得先知道这个表有多少行。得分三种情况来进行分析,这就得用到UNION操作符。
UNION操作符用于合并两个或多个SELECT语句的结果集。
请注意:UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。
UNION的语法:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
代码:
SELECT id, student
FROM
(
# 数量是偶数
SELECT id-1 as 'id', student FROM seat WHERE mod(id,2)=0
UNION
# id 是奇数
SELECT id+1 as 'id', student FROM seat WHERE mode(id,2)!=0 AND id != (SELECT count(*) FROM seat)
UNION
# 最后一个id是奇数
SELECT id as 'id', student FROM seat WHERE mode(id,2)!=0 AND id = (SELECT count(*) FROM seat)
) seat
ORDER By id
结果如下:
如果有什么其他方法,请留言告诉我把~
觉得不错,就点赞或者关注~
谢谢~ ~