號碼列表之間丟失號碼我有10個用戶數其中一些已被刪除,而當我在節目選擇列如下:得到我的數據庫使用SQL
missing_user_number:
1,
2,
5,
8,
10,
,我需要知道是否有一個腳本,可以讓丟失號碼這樣的,我不希望刪除的數據後面,我只是想丟失號碼作爲integrs數據:
missing_user_number:
3,
4,
6,
7,
9,
號碼列表之間丟失號碼我有10個用戶數其中一些已被刪除,而當我在節目選擇列如下:得到我的數據庫使用SQL
missing_user_number:
1,
2,
5,
8,
10,
,我需要知道是否有一個腳本,可以讓丟失號碼這樣的,我不希望刪除的數據後面,我只是想丟失號碼作爲integrs數據:
missing_user_number:
3,
4,
6,
7,
9,
在SQL的大多數版本,它實際上更容易得到範圍的缺失值,大鼠她不是每個缺少的值:
select user_number + 1 as missing_range_start, next_user_number - 1 as missing_range_end
from (select t.*,
lead(user_number) over (order by user_number) as next_user_number
from t
) t
where user_number <> user_number + 1;
注:這僅發現內部丟失號碼,如在你的問題的例子。
謝謝你,這對我很好用 – azza
您可以創建一個包含全部10個用戶號碼的內嵌數字表。然後LEFT JOIN
你的表爲了得到缺失的數字:
SELECT t1.n AS missing_user_number
FROM (
SELECT 1 AS n UNION ALL SELECT 2 ... SELECT 10
) AS t1
LEFT JOIN mytable AS t2 ON t1.n = t2.user_number
WHERE t2.user_number IS NULL
你使用哪個dbms? (一些產品特定的SQL可以得心應手。) – jarlh
sql server 2008 – azza