2012-03-28 348 views
1

我有這樣的MySQL數據庫表:如何從現有的mysql表列中生成1-99之間的數字?

id name surname number 
1 emil asadi 26 
2 anybody anybody 27 

我要檢查列 - >那就是如果1-99之間不存在號碼,然後生成的1.New數開始新的號碼也應該是在1-99之間。

我怎麼能這樣做函數和mysql的查詢?或者你有其他方式嗎?謝謝大家

+1

但是這必須在插入時完成?我的意思是:當你添加一行你想設置一個數字[1-99]到不存在的列號?如果所有的1-99號碼都存在? – kappa 2012-03-28 09:17:39

回答

4

您可以使用單個查詢生成隨機數,而不是從1開始使用下面的查詢。我不認爲這將是重要的:

SELECT id, name, surname, 
if(number between 1 and 99 ,number,floor(1 + rand() * 99)) as number 
FROM table 

讓我知道如果這是你想要的。

+0

你是不是指'FLOOR(1 +(RAND()* 99))? 'round(1 + rand()* 100)'產生的數字範圍爲1至101. – nnichols 2012-03-28 09:33:53

+0

是的..兩者都會給出相同的結果 – 2012-03-28 09:35:28

+0

編號'FLOOR(1 +(RAND()* 99))'範圍1 - 99,而'round(1 + rand()* 100)'給出的範圍在1 - 101之間。 – nnichols 2012-03-28 09:38:16

0

也許試試這個SQL語句來獲得你的數字之間的差距。 如果你有差距,你可以在一個函數中使用結果來觸發UPDATE語句。

SELECT a.number+1 AS start, MIN(b.number) - 1 AS end 
FROM database AS a, database AS b 
WHERE a.number < b.number 
GROUP BY a.number 
HAVING start < MIN(b.number) 
相關問題