2012-08-24 49 views
0

我有一个存储客户记录的数据库,我想设置一个cron作业以定期覆盖这些记录。我想说ORDER的Select *,其中ORDER_ID不在列表的前100位。每行都有自己的order_id,最新的order_id是最新的订单。如果遇到问题,我需要保留最新的100个订单ID。感谢您的时间。如何从表中选择除最后100之外的所有记录

+0

“覆盖”是什么意思? – Kermit

回答

0
select * 
from Orders 
where OrderID not in (
    select OrderID 
    from Orders 
    order by OrderID desc 
    limit 100) 
+0

你好,谢谢你的帮助。我似乎收到错误消息:警告:mysql_fetch_array()期望参数1是资源,布尔在... $ result = mysql_query(“SELECT * from order-table WHERE order_id NOT IN( SELECT order_id 从订单表 ORDER BY order_id desc LIMIT 100)“); ($ row = mysql_fetch_array($ result)){ \t echo $ row ['order_id']; \t echo“
”; } – Natastna2

+0

它似乎是导致该问题的限制100,因为它不允许在子查询中?有没有解决的办法? – Natastna2

0

您可以将最后一个order_id的行集合留给100个 - 这将导致除了最后100个的最后一个在左连接集合中具有NULL。

SELECT o.* from `order-table` o 
LEFT JOIN 
    (SELECT order_id FROM `order-table` ORDER BY order_id DESC LIMIT 100) o100 
ON o.order_id = o100.order_id 
WHERE o100.order_id IS NULL 
相关问题