2012-08-24 51 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 
相關問題