【问题标题】:How to select all records from table apart from the last 100如何从表中选择除最后 100 条之外的所有记录
【发布时间】:2012-08-25 09:03:12
【问题描述】:

我有一个存储客户记录的数据库,我想设置一个 cron 作业来定期覆盖这些记录。我想说从 ORDERS 中选择 *,其中 ORDER_ID 不在列表的前 100 位。每行都有自己的 order_id,其中最新的 order_id 是最新的订单。我需要保留最新的 100 个订单 ID,以防出现问题。感谢您的时间。

【问题讨论】:

  • “覆盖”是什么意思?

标签: mysql phpmyadmin


【解决方案1】:
select *
from Orders
where OrderID not in (
    select OrderID 
    from Orders 
    order by OrderID desc 
    limit 100)

【讨论】:

  • 您好,感谢您的帮助。我似乎收到了错误消息:警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在... $result = mysql_query("SELECT * from order-table WHERE order_id NOT IN ( SELECT order_id from order-table ORDER BY order_id desc LIMIT 100)"); while($row = mysql_fetch_array($result)){ echo $row['order_id'];回声“
    ”; }
  • 这似乎是导致问题的限制 100,因为它在子查询中是不允许的?有没有办法解决这个问题?
【解决方案2】:

您可以左连接最后一个 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 2013-11-24
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    相关资源
    最近更新 更多