获取给定列的同一表中的最小组

时间:2018-05-10 15:27:12

标签: sql grouping

我有一个有3列的表。 Plate_Id PROD_ID LOCATION_ID

表格看起来像这样,

enter image description here

期望的结果应该是突出显示的行。

基本上,我需要plate_id,其中的位置是最小的组。 我不关心Prod_Id之后。

2 个答案:

答案 0 :(得分:0)

对于某些特定于DBMS的您可以使用LIMITTOP子句

select * 
from table t
where Prod_Id = (select top(1)  Prod_Id
                 from table
                 where plateid = t.plateid
                 group by Prod_Id
                 order by count(1) ASC
                );

LIMTI条款

select * 
from table t
where Prod_Id = (select Prod_Id
                  from table
                  where plateid = t.plateid
                  group by Prod_Id
                  order by count(1) ASC
                  LIMIT 1
                 );

答案 1 :(得分:0)

警告:这不是一个有效的解决方案!!! 只要保持在这里,以免有人犯同样的错误。

此解决方案不会超过2个prod_id方案。

谢谢你们! 我想到了以下内容,它对我有用。 如果您认为可能存在我可能忽视的漏洞,请发表评论。



SELECT DISTINCT pp1.plate_id, pp1.location
FROM MyPlate pp1

inner join MyPlate  pp2 on pp1.plate_id = pp2.plate_id and pp1.location = pp2.location

WHERE pp1.prod_id <> pp2.prod_id

ORDER BY pp1.plate_id
&#13;
&#13;
&#13;

但是,这些是你有一些有趣的解决方案,它将来会很方便!再次感谢!