力扣 (LeetCode) - Database-刷題626--換座位

妙手書生2016發表於2020-11-26

目錄

題目描述:

我的答案:

題目解析:



題目描述:

小美是一所中學的資訊科技老師,她有一張 seat 座位表,平時用來儲存學生名字和與他們相對應的座位 id。

其中縱列的 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  |
+---------+---------+
注意:

如果學生人數是奇數,則不需要改變最後一個同學的座位。


我的答案:

select case when id=(select max(id) from seat) and mod(id,2)=1 then id
           when id<(select max(id) from seat) and mod(id,2)=1 then id+1
           when id=mod(id,2)=0 then id-1 end
           as id, student
from seat
order by id

題目解析:

1、考察case when.... then... else .... end邏輯結構的應用

2、考察奇偶數的判斷

相關文章