首页 > 数据库技术 > 详细

MySQL_项目8: 换座位(难度:中等)

时间:2019-04-14 21:06:56      阅读:274      评论:0      收藏:0      [点我收藏+]

项目8: 换座位(难度:中等)

小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。

其中纵列的 id 是连续递增的,小美想改变相邻俩学生的座位,你能不能帮她写一个 SQL query 来输出小美想要的结果呢?

 请创建如下所示seat表:

示例:

+---------+---------+

| id | student |

+---------+---------+

| 1 | Abbot |

| 2 | Doris |

| 3 | Emerson |

| 4 | Green |

| 5 | Jeames |

+---------+---------+

 

假如数据输入的是上表,则输出结果如下:

+---------+---------+

| id | student |

+---------+---------+

| 1 | Doris |

| 2 | Abbot |

| 3 | Green |

| 4 | Emerson |

| 5 | Jeames |

+---------+---------+

注意:如果学生人数是奇数,则不需要改变最后一个同学的座位。

 

-- 创建seat表
CREATE TABLE seat (
id int(11) NOT NULL,
student varchar(20) NOT NULL,
PRIMARY KEY (`id`));

-- 插入数据
INSERT INTO seat VALUES (1, Abbot);
INSERT INTO seat VALUES (2, Doris);
INSERT INTO seat VALUES (3, Emerson);
INSERT INTO seat VALUES (4, Green);
INSERT INTO seat VALUES (5, Jeames);

 

查询SQL代码:

-- id为偶数时,将id-1
SELECT id-1 as id,student
FROM seat
WHERE id % 2=0

UNION

-- id为奇数且最后一个数不是奇数时,将id+1
SELECT id+1 as id,student
FROM seat
WHERE id % 2=1 AND id < (SELECT COUNT(*) from seat)

UNION

-- id为奇数且最后一个数是奇数时,id不变
SELECT *
FROM seat
WHERE id % 2=1 AND id =(SELECT COUNT(*) from seat)

ORDER BY id;

 

MySQL_项目8: 换座位(难度:中等)

原文:https://www.cnblogs.com/wodexk/p/10707007.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!