如何检查多行中的一个值

时间:2016-02-04 14:41:47

标签: mysql sql

最好的方法是检查具有相同GroupID的表中不同的行组(例如不同的团队)是否具有SINGLE队长?例如,Captain Identifier可能是'10',因此它必须通过具有相同groupID的多个记录并检查是否只有一个记录,其中positionID为'10'。我需要它为所有团队做到这一点,即所有groupID的

-------------------------------------------------
ID | Group ID | Name | Position|
-------------------------------------------------
1       1       John     3
2       1       jim      3
3       1       Hahn     4
4       1       Mary     4
5       1       Moe      4
6       1       Charlie  10
7       2       taylor   4
8       2       Geoff    4
9       2       adam     4
10      2       cam      10
11      3       sharon   2
12      3       tony     4
13      3       steve    3
14      3       eve      4
15      3       gwen     10
--------------------------------

所以我需要它做的是检查每个groupID只有一个10作为位置。

先谢谢你们。查看底部的图片链接。

我正在使用mysql btw

很抱歉,如果描述得很糟糕

2 个答案:

答案 0 :(得分:1)

如果我理解你 - 我认为你需要这样的东西:

select groupId, sum(case when positionID='10' then 1 else 0 end) as captains   
from tbl_name
group by groupID
having captains = 1
我结束了吗?

答案 1 :(得分:0)

如果我理解正确,你需要一个指示,告诉你groupID是否有一个以上的队长。

所以你需要的是:

select groupID,case when cnt = 1 then 1 else 0 end as IND_ONE_CAPTAIN from (
select groupID, sum(case when positionid = '10' then 1 else 0 end) as cnt
from players
group by groupID)

现在IND_ONE_CAPTAIN列由1或0组成,1表示组ID只有1个队长,0表示他们有更多。