2013-01-24 55 views
1

讓我們假設我們有一個表格,其行是僅由它們的位置標識的,並且沒有其他特別的區別(作爲主鍵,ID,時間戳等),並且 因爲MySQL'DELETE'語法不允許LIMIT如何成功刪除這樣的表中的一行。根據表格中的位置刪除行

像:

DELETE FROM `table` LIMIT 49,1 

因爲它是可能的:

SELECT * FROM `table` LIMIT 49,1 

我感謝你在爲你的好意,幫助一個答案。

+0

通常情況下,你將需要添加一個額外的列來存儲行位置。隨着位置,你可以很容易地刪除與位置50行。 – ajreal

回答

1

這不是一個有用的功能,因爲表中的行順序不能保證。在負載下,由於MySQL的行爲,表總會以不同的順序出現。

你可以嘗試以下方法,但如上所述,它不能保證準確

DELETE FROM `table` 
    WHERE `col1` IN (SELECT `col1` FROM `table` LIMIT 49,1) 
     AND `col2` IN (SELECT `col2` FROM `table` LIMIT 49,1) 
     AND ... 
    LIMIT 1; 
+0

如果我有2行存儲完全相同的信息會怎麼樣?有沒有解決方案? – khael

+0

這就是限制1 –

+0

的目的所以它只需要第一個?......沒有其他方法嗎?假設我想刪除第三個這樣的行。我知道它可能與其他信息完全相同,但這就是我如何一次識別任何行,作爲數組的元素。 – khael

1

表是集合;行沒有位置。

+0

即使考慮到這一點,有一個閱讀順序,我想使用,我可以組織我的行動。 – khael