2012-05-23 61 views
5

我有一個類似的表偏移或OFFSET:LIMIT在UPDATE SQL查詢

| 0 | X | 
| 1 | X | 
| 2 | X | 
| 3 | Y | 
| 4 | Y | 
| 5 | X | 
| 6 | X | 
| 7 | Y | 
| 8 | Y | 
| 9 | X | 

我想更換第一2次出現的XX1,然後4下出現與X2使得結果表看起來是這樣的:

| 0 | X1 | 
| 1 | X1 | 
| 2 | X2 | 
| 3 | Y | 
| 4 | Y | 
| 5 | X2 | 
| 6 | X2 | 
| 7 | Y | 
| 8 | Y | 
| 9 | X2 | 

問題的表是當然更大,因此出現的次數會高得如此手工編輯是不是一個解決方案。

我想要做這樣的事情:

UPDATE table SET column = 'X' WHERE column = 'X2' LIMIT 90, 88

但遺憾的是MySQL的似乎並不在UPDATE查詢支持OFFSET ...有沒有辦法做到這一點?

回答

3

試試這個:

UPDATE table SET column = 'X1' WHERE id IN(SELECT id FROM (SELECT id FROM table WHERE column = 'X' LIMIT 2) as u);

然後

UPDATE table SET column = 'X2' WHERE id IN(SELECT id FROM (SELECT id FROM table WHERE column = 'X' LIMIT 4) as u);

7

我不知道你是否有ID表或不提起,但您可以使用WHERE ID BETWEEN 88和90,MySQL不支持更新查詢中的偏移量,但是您可以通過限制使用BETWEEN指令