【问题标题】:Selecting of specific rows based on the column that used GROUP BY in mysql根据 mysql 中使用 GROUP BY 的列选择特定行
【发布时间】:2013-09-18 08:07:47
【问题描述】:

这是我表的记录:

item_code   |   qty

001             1
001             1
002             2    
002             2  
003             2
004             1
005             3

这是我的代码,用于选择不同的item_code 和基于GROUP BY qty 的数量总数:

select item_code, sum(qty) as qty
from imp_inv
group by item_code

结果如下:

item_code   |   qty

001             2
002             4    
003             2
004             1
005             3

我苦苦挣扎的是,如何选择带有qty where 子句的item_code,这就是我尝试过的:

select item_code, sum(qty) as qty
from imp_inv where qty = 2
group by item_code

结果如下:

item_code   |   qty

002             2    
002             2  
003             2

上面的代码只选择qty为2的item_code,我想要的是根据qty的总数选择一个item_code,这是我的结果想拥有:

item_code   |   qty

001             2  
003             2

希望大家能理解我的问题,谢谢大家的帮助。

更新

我删除了所有选择查询中的 distinct。

我将 item_code 的数量改为 3。

我将 COUNT 更改为 SUM。

【问题讨论】:

  • 您确定您使用的是count(qty) 而不是(sum(qty)?示例数据和结果与您显示的查询不匹配..
  • @ypercube:是的,先生,我正在使用 count(qty),它对我有用。
  • @Matthew,查询中是否需要DISTINCT
  • SELECT COUNT(qty) ... GROUP BY item_code(您的第一个查询)不可能为item_code=2 显示4。与您显示的数据不同。
  • @ypercube:先生,您好,在我的第一个查询中,我选择了不同的计数及其总数,我没有使用 item_code = 2 的 where 子句,如果我错了,请纠正我,谢谢帮助。

标签: mysql sql select count distinct


【解决方案1】:

请尝试以下:

 HAVING count(qty) = 2

【讨论】:

    【解决方案2】:

    试试看:

    select q.item_code, q.qty from 
    (select item_code as item_code, count(qty) as qty from imp_inv group by item_code) as q
    where q.qty=2
    

    【讨论】:

    • 是的,这是我的印刷错误。固定。
    • 真的,所有这些DISTINCT 都是多余的。
    【解决方案3】:

    您不应将列重命名为已作为列名存在的别名,正如您刚刚注意到的那样,这会造成混淆。

    WHERE qty = 2指的是column的数量,当你把它改成HAVING qty = 2时它指的是别名count(qty) as qty.

    只需使用 HAVING 和其他名称,例如 count(qty) as cnt

    顺便说一句,您不需要 DISTINCT,因为它始终适用于所有列,并且 GROUP BY 已经返回一个不同的值列表。

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 2011-08-06
      • 2016-11-17
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2017-08-31
      • 1970-01-01
      相关资源
      最近更新 更多