按日期排序并选择,直到达到特定ID

时间:2018-03-30 03:36:15

标签: mysql

我有一个包含ID, STATUS, DATE列的简单表,表中的行按DATE排序,我想获取所有行,直到达到特定ID,然后停止,如:

SELECT FROM myTable WHERE `DATE` <= '2017-10-09' ORDER BY `DATE` ASC UNTIL? `ID` = 119;

enter image description here

我想知道是否可能以某种方式停止特定ID,无论ID是什么..

感谢。

编辑解释

我想选择在任何列下排序的行,但在达到特定提供的ID时停止。在上图中,结果应该是除了行119之外的所有行。

我希望现在很清楚。

3 个答案:

答案 0 :(得分:1)

this这样的东西可能有效:

SET @marker = NULL;
SELECT *
FROM myTable
WHERE `DATE` <= '2017-10-09'
    AND ISNULL(@marker := IF(id = 119, 1, @marker))
ORDER BY `DATE` ASC;

答案 1 :(得分:0)

您应该短语查询以选择日期小于OrderingService service = new OrderingService(); IOrderingService port = service.getWSHttpBindingIOrderingService(); BindingProvider bp = (BindingProvider) port; bp.getRequestContext().put("ws-security.username", USERNAME); bp.getRequestContext().put("ws-security.password", PASSWORD); System.out.println("submit order..."); SubmitOrderResponse submitOrderResponse = port.submitOrder(WebService.makeSubmitOrderRequest()); System.out.println("submit order response..."); Integer orderId = submitOrderResponse.getOrderId(); System.out.println("orderId:" + orderId); submitOrderResponse.getOrderStatus().getValue().getOrderItemStatus().forEach(item -> { System.out.println("item.getProduct:" + item.getProduct()); System.out.println("item.getStatus:" + item.getStatus()); }); System.out.println("AccountId:" + submitOrderResponse.getAccountId()); 的记录日期的记录:

ID = 119

答案 2 :(得分:0)

Tim Biegeleisen的答案是正确的,但是如果你没有时间在你的日期字段中,那么order by将使用日期,然后使用你指定的任何有序索引。因此,您将获得的所有记录等于子查询的WHERE子句中指定的id的日期。

因此,例如,您还将返回ids 200-202的行,除非您在日期上提供更高的精度,或者将id字段添加到order by子句中,否则无法解决这个问题,在这种情况下,您需要&#39 ; ll需要在同一日期排除指定的id整数值以上的所有ID。