2016-11-30 46 views
-1

我有一個SQL聲明,從mysql的20排起刪除

select * from table1 where member_id='$member_id' order by date_time_modified desc; 

返回行,但我只想要使用第一結果。

如何使用單個DELETE語句來保留前20行並刪除第20行(21到48)之後的所有行。

+0

倍數的方式,請參閱答案。 – Petzy

回答

0

您可以在刪除查詢使用LIMIT,只是改變你的排序順序刪除最後行,而不是首創

DELETE 
FROM table1 
WHERE member_id='$member_id' 
ORDER BY date_time_modified ASC 
LIMIT 28 
; 
0

如果您需要刪除基於一個列表,你可以使用IN

delete from your_table 
where id in (value1, value2, ...); 

如果您需要刪除基於查詢的結果,你也可以使用IN

delete from your_table 
where id in (select aColumn from ...); 

(請注意,子查詢必須返回只有一列)如果您需要刪除基於一個響

值電子,任你使用BETWEEN或者您使用的不平等:

delete from your_table 
where id between bottom_value and top_value; 

delete from your_table 
where id >= a_value and id <= another_value; 

另外,記得要加的聲明ORDER BYLIMITASCDESC按您的要求。

可以隨意修改和測試出你想使用的語句:

Here

and Here

0

因爲你是一個日期時間去訂貨徘徊,我想你想保持最新的20行?如果是一個 - 時間刪除次序是按升序排列,使舊行首先給出再由(48-20)行限制它刪除:

DELETE FROM table1 WHERE member_id='$member_id' ORDER BY date_time_modified ASC LIMIT 28