我有一个mySQL数据库,我试图通过catch获取特定的数据。解释这一点的最好方法是向您展示。
我有一个具有用户名和ID_no的表,该ID并不总是唯一的,有些情况会显示重复(这是预期的),表可能看起来像这样
Username ID_No
User1 1111111
User1 1111111
User1 1111111
User1 1111111
User1 2222222
User1 3333333
User1 3333333
User1 444444
User1 444444
User1 444444
User1 555555
User1 666666
我需要得到一个独特的计数,这是一块蛋糕
Select username, count(Distinct id_no)
from Cases
group by username
这给了我一个6的计数。这就是它变得有趣的地方我现在需要加入另一个表来添加一个类别,这样表可能看起来像这样
Username Cat ID_No
User1 Category1 1111111
User1 Category2 1111111
User1 Category2 1111111
User1 Category2 1111111
User1 Category5 2222222
User1 Category6 3333333
User1 Category7 3333333
User1 Category8 444444
User1 Category8 444444
User1 Category8 444444
User1 Category11 555555
User1 Category12 666666
有了这个我还需要获得一个unquie计数,但是这里的问题是我需要匹配与之前相同的数字(6),但这是我在MySQL中如何做到这一点的问题因为正如你所看到的那样,有些类别重叠,因此我的查询很简单,因为它看起来像这样
Select username, cat, count(Distinct id_no)
from Cases c
join Case_details cd on c.id_no=cd.id_no
group by username, cat
因为我不得不按猫分组,所以得到8分。 如果这是SQL服务器,我可以使用ID上的前1来进行内部查询(我认为),但mySQL不允许我在子查询中使用限制。
所以要清楚我真正需要做什么看起来像这样
Username Cat ID_No
User1 Category1 1111111
User1 Category5 2222222
User1 Category6 3333333
User1 Category8 444444
User1 Category11 555555
User1 Category12 666666
您会注意到只显示了具有该ID的第一个类别。作为总计数,它将与第一个相同,这就是我正在寻找的。 p>
有人在这里有任何想法吗?