从第20行开始删除Mysql

时间:2016-11-30 00:27:32

标签: mysql

我有SQL声明,

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

返回 48 行,但我只想使用第一个 20 结果。

如何使用单个DELETE语句保留前20行并删除第20行(21到48)之后的所有行。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以在删除查询中使用LIMIT,只需更改排序顺序即可删除最后一行而不是第一行

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

答案 2 :(得分:0)

由于您按日期时间降序排序,我想您想保留最新的20行?如果它是一次性删除顺序,则按升序排列,以便首先给出较旧的行,然后将其限制为(48-20)行以删除:

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