【问题标题】:Select where number of results is above x选择结果数高于 x 的位置
【发布时间】:2013-04-15 23:18:00
【问题描述】:

我有一个这样的查询:

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-01 的三个条目,那么它们将不会显示,但如果有来自2013-04-02 的九个条目(或任何>= 5),那么这些结果将包含在查询。

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

有谁知道我如何做到这一点?

【问题讨论】:

    标签: mysql date group-by limit


    【解决方案1】:

    您可以添加嵌套的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
    

    【讨论】:

      猜你喜欢
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      相关资源
      最近更新 更多