題:
------------- ---------
| Column Name | Type |
------------- ---------
| id | int |
| name | varchar |
------------- ---------
id 是該表的主鍵列。該表的每一行都表示學生的姓名和 ID。id 是一個連續的增量。
有人可以在下面的代碼中向我解釋“id = (select max(id) from Seat)”的目的嗎?
select
(CASE when (select max(id) from seat)%2 = 1 and id = (select max(id) from seat) then id
when id%2 = 1 then id 1
else id -1
end) as id,student
from seat
order by id
對于這個問題,以下內容還不夠嗎?
select
(CASE when (select max(id) from seat)%2 = 1 then id
when id%2 = 1 then id 1
else id -1
end) as id,student
from seat
order by id
uj5u.com熱心網友回復:
似乎目的是在每對行之間交換 ID。
如果有偶數行,那沒問題,你把奇數ID加1,再從偶數ID中減去。
但是如果有奇數行,你必須特別對待最后一行,因為沒有下一行可以交換 ID。與偶數情況一樣,所有其他行都被交換。
在您的查詢版本中,如果有奇數行,則不交換任何 ID,因為您沒有檢查當前行是否是應特別對待的最后一行。
那就是AND id = (select MAX(id) FROM seat)檢查。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/366229.html
標籤:mysql
