2013-10-26 33 views
0

我試圖做一個查詢,隨機順序的id並將它們放入一個臨時id列,但只有在狀態列標記爲'2'MySQL的查詢隨機行,然後自動增量列

表開始時是這樣的:

id  tempid  status 
1  | -1 | 2 
2  | -1 | 2 
3  | -1 | 2 
4  | -1 | 2 
5  | -1 | 2 
6  | -1 | 2 
7  | -1 | 1 
8  | -1 | 1 
9  | -1 | 2 

然後再查詢後,會做這樣的事情:

id  tempid  status 
1  | 2  | 2 
2  | 9  | 2 
3  | 1  | 2 
4  | 5  | 2 
5  | 3  | 2 
6  | 4  | 2 
7  | -1 | 1 
8  | -1 | 1 
9  | 6  | 2 

任何幫助將非常感激:d

+2

你究竟在做什麼,爲什麼? – Strawberry

回答

0

這工作:

SET @newTempID=0; 
UPDATE ttable 
LEFT JOIN 
    (SELECT id, @newTempId:[email protected]+1 AS tempid ,status 
    FROM 
    (SELECT id,status FROM ttable WHERE status=2 ORDER BY RAND()) t 
) t2 ON ttable.id=t2.id 
SET ttable.tempid=t2.tempid WHERE ttable.status=2; 

它看起來可怕,因爲它是早上6點,我還沒有睡,但我測試了它和它的作品。請注意,您必須運行兩個查詢才能正常工作。如果這確實可以解決您的問題,請標記爲已解決。

+0

在放入我的表格名稱之後工作了一個魅力,在最後一行將ttable.st = 2更改爲ttable.status = 2並在所有狀態列周圍放置..忘記這是一個保留字..:S謝謝非常感謝您的快速回復! – JiM