Open techiall opened 6 years ago
小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。
seat
其中纵列的 id 是连续递增的
小美想改变相邻俩学生的座位。
你能不能帮她写一个 SQL query 来输出小美想要的结果呢?
示例:
+---------+---------+ | id | student | +---------+---------+ | 1 | Abbot | | 2 | Doris | | 3 | Emerson | | 4 | Green | | 5 | Jeames | +---------+---------+
假如数据输入的是上表,则输出结果如下:
+---------+---------+ | id | student | +---------+---------+ | 1 | Doris | | 2 | Abbot | | 3 | Green | | 4 | Emerson | | 5 | Jeames | +---------+---------+
注意:
如果学生人数是奇数,则不需要改变最后一个同学的座位。
mysql
sql 里面有 if 函数,if 的使用方法如下,和 编程语言的 if...else... 差不多。
if(expr1, expr2, expr3),当 exp1 的值为 true 时,运行的 exp2,否则运行 exp3。
这题就逻辑题,用伪代码表达如下。
id = function(id) { if (id % 2 == 1) { // 如果 id 不是 2 的倍数,也就是奇数 if (id == count(*)) { // 如果是最后一行, 就还是自己 return id; } else { // 第一个条件满足,第二个不满足时和下一个交换 return id + 1; } } else { // id 为偶数,和上一个交换 return id - 1; } };
以下为提交代码
select if (id % 2 = 1, if (id = (select count(*) from seat), id, id + 1), id - 1) id, student from seat order by id;
小美是一所中学的信息科技老师,她有一张
seat
座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的
小美想改变相邻俩学生的座位。
你能不能帮她写一个 SQL query 来输出小美想要的结果呢?
示例:
假如数据输入的是上表,则输出结果如下:
注意:
如果学生人数是奇数,则不需要改变最后一个同学的座位。
mysql
sql 里面有 if 函数,if 的使用方法如下,和 编程语言的 if...else... 差不多。
这题就逻辑题,用伪代码表达如下。
以下为提交代码