編寫SQL 看似簡單,實際超難的SQL語句!

2021-04-19 09:38:28 字數 2620 閱讀 7579

有表tb的唯一欄位id(範圍0-255)

1、查詢乙個未用id

2、查詢乙個未用且最小的id

3、查詢乙個未用且最大的id

網上很多的sql用下表會失敗

tb:********************==

id  ***

254  ccc

255  ...

********************==

有鄒建提供:

sql code

--

你的源表

declare

@tbtable

( id

int)

insert

@tbselect

254

union

allselect

1

union

allselect

255

--1、查詢乙個未用id

select

*from

( select

id =

a.id

+(b.id

*4)

+(c.id

*16)

+(d.id

*64)

from

( select

id =

0

union

allselect

id =

1

union

allselect

id =

2

union

allselect

id =

3)a, (

select

id =

0

union

allselect

id =

1

union

allselect

id =

2

union

allselect

id =

3)b, (

select

id =

0

union

allselect

id =

1

union

allselect

id =

2

union

allselect

id =

3)c, (

select

id =

0

union

allselect

id =

1

union

allselect

id =

2

union

allselect

id =

3)d )id

where

notexists

( select

*from

@tbwhere

id =

id.id)

--2、查詢乙個未用且最小的id

select

min(id)

+1

from

( select

id from

@tbunion

allselect

id =

-1) a

where

notexists

( select

*from

@tbwhere

id =

a.id

+1)

--3、查詢乙個未用且最大的id

select

max(id)

-1

from

( select

id from

@tbunion

allselect

id =

256) a

where

notexists

( select

*from

@tbwhere

id =

a.id

-1)

如果第乙個問題是任意乙個未用的

那麼可以直接用問題2或者3的答案

看似簡單的a b

輸入兩個整數a和b,計算a b的和 注意此題是多組測試資料 這道題的難點就在多組測試資料,如果是一組資料那麼乙個scanf 函式就可以解決,但是這道題要求的是多組資料,那麼就要再用乙個while 函式讓它迴圈,如下 include intmain return0 關於 的作用 1 在windows下...

看似簡單的求R n

求出r n其中r為實數 0.0 r 99.999 n是乙個整數 n 25 大家很容易想到,這還不容易麼?可是如果要求最精確的結果呢?就是說小數點之後有多少輸出多少.並且計算時間不多於1s.是的,這是一道acm的試題 我暫時沒有考慮精確度的問題,感覺陷阱在1sec上面,於是沒有敲出來 就開始想,可能這...

區間DP例題總結 看似不簡單的簡單題

今天,我們開始學那奇怪的區間dp。簡單來說,區間dp分為三個部分 階段列舉左端點,再列舉右端點 策略 顧名思義就是因為有些題,需要求出中點k,但有些題卻又不需要。所以我們應該判斷,用與不用。現在我們來看幾道經典例題 n堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成...