我有一個SQL
聲明,從mysql的20排起刪除
select * from table1 where member_id='$member_id' order by date_time_modified desc;
返回行,但我只想要使用第一結果。
如何使用單個DELETE
語句來保留前20行並刪除第20行(21到48)之後的所有行。
我有一個SQL
聲明,從mysql的20排起刪除
select * from table1 where member_id='$member_id' order by date_time_modified desc;
返回行,但我只想要使用第一結果。
如何使用單個DELETE
語句來保留前20行並刪除第20行(21到48)之後的所有行。
您可以在刪除查詢使用LIMIT
,只是改變你的排序順序刪除最後行,而不是首創
DELETE
FROM table1
WHERE member_id='$member_id'
ORDER BY date_time_modified ASC
LIMIT 28
;
如果您需要刪除基於一個列表,你可以使用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 BY
,LIMIT
和ASC
或DESC
按您的要求。
可以隨意修改和測試出你想使用的語句:
因爲你是一個日期時間去訂貨徘徊,我想你想保持最新的20行?如果是一個 - 時間刪除次序是按升序排列,使舊行首先給出再由(48-20)行限制它刪除:
DELETE FROM table1 WHERE member_id='$member_id' ORDER BY date_time_modified ASC LIMIT 28
倍數的方式,請參閱答案。 – Petzy