我有这样的查询:

SELECT
  oh.date_added AS date_shipped,
  o.date_added
FROM
  ".DB_PREFIX."order o , ".DB_PREFIX."order_history oh
WHERE
  o.order_id = oh.order_id
  AND oh.order_status_id = 3


我想做的是仅在有特定日期的X或更多行时显示结果。

因此,如果X=5来自2013-04-0 1的三个条目,则不会显示,但是如果来自>= 5的九个条目(或其他任何2013-04-02),则这些结果将包含在查询中。

一旦满足要求,我希望查询从匹配日期开始限制到那一组行。

有谁知道我怎么能做到这一点?

最佳答案

您可以添加嵌套的SELECT进行计数:

SELECT
  oh.date_added AS date_shipped,
  o.date_added
FROM
  ".DB_PREFIX."order o , ".DB_PREFIX."order_history oh
WHERE
  o.order_id = oh.order_id
  AND oh.order_status_id = 3
  AND (SELECT COUNT(*) FROM ".DB_PREFIX."order o2
              WHERE o2.date_added>"2013-04-01") > 5


或按照自己的方式连接一张桌子

SELECT
  o.date,
  COUNT(*) cnt
FROM
  order o
  JOIN order o2 ON o2.date = o.date AND o2.id != o.id
WHERE
  your conditions
GROUP BY o2.id
HAVING cnt > 5

关于mysql - 选择结果数大于x的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16026219/

10-14 13:49