根据mysql中使用GROUP BY的列选择特定行
以下是我的表格记录:根据mysql中使用GROUP BY的列选择特定行,mysql,sql,select,count,distinct,Mysql,Sql,Select,Count,Distinct,以下是我的表格记录: item_code | qty 001 1 001 1 002 2 002 2 003 2 004 1 005 3 这是我的代码,用于选择不同的项目\u代码以及基于分组依据数量的总数量: select item_code, sum(qty) as qty from imp_inv gr
item_code | qty
001 1
001 1
002 2
002 2
003 2
004 1
005 3
这是我的代码,用于选择不同的项目\u代码
以及基于分组依据
数量
的总数量:
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
item_code | qty
002 2
002 2
003 2
我正在努力的是,如何选择一个带有where子句的项目\u code
,这就是我所尝试的:
select item_code, sum(qty) as qty
from imp_inv where qty = 2
group by item_code
这就是结果:
item_code | qty
001 2
002 4
003 2
004 1
005 3
item_code | qty
002 2
002 2
003 2
上面的代码只是选择数量为2的项目_code
,我想要的是根据其数量的总计数选择一个项目_code
,这是我想要的结果:
item_code | qty
001 2
003 2
希望你们都能理解我的问题,谢谢你们的帮助
更新
我删除所有select查询中的distinct
我将商品代码的数量更改为3
我将计数更改为总和。请尝试以下操作:
HAVING count(qty) = 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
您不应该将列重命名为已经作为列名存在的别名,正如您刚才注意到的那样,这会让人困惑 其中qty=2指的是列数量,当您将其更改为HAVING qty=2时,它指的是别名将(数量)计为数量 只需使用一个不同的名称,如count(qty)作为cnt
顺便说一句,您不需要DISTINCT,因为它总是对所有列和GROUP BY altready返回一个不同的值列表。您确定您使用的是
计数(数量)
,而不是(总和(数量)
?样本数据和结果与您显示的查询不匹配。@ypercube:是的,先生,我使用的是计数(数量),它对我有效。@Matthew,查询中是否需要DISTINCT
?无法选择计数(数量)…按项目分组\u code
(您的第一次查询)将显示item_code=2
的4
。与您显示的数据不同。@ypercube:Hi sir,在我的第一次查询中,我选择了distinct及其总计数,我没有对item_code=2使用where子句,如果我错了,请纠正我,先生,谢谢您的帮助。是的,这是我的打印错误。修复了。真的,所有这些distinct
都是redun唐太斯。