我有桌子:
+----------------+
| table |
+----------------+
| u_id | sail_id |
+----------------+
| 1 | 5 |
| 1 | 5 |
| 2 | 5 |
| 2 | 4 |
| 1 | 4 |
+----------------+
如何编写SQL语句来计数不同u_id
有不同的sail_id
(指没有重复的)?
示例:如果为SELECT COUNT(*) FROM table GROUP BY sail_id
,则结果为2
如果SELECT COUNT(*) FROM table GROUP BY sail_id, user_id
,结果将是1
我需要的结果是4
(因为有5行,只有第一和第二行具有相同的u_id和sail_id)。也许我需要在某个地方添加DISTINCT
。
1)您可以使用COUNT(DISTINCT ...)
:
SELECT COUNT(DISTINCT u_id,sail_id)
FROM tab;
2)您可以结合使用子查询DISTINCT
:
SELECT COUNT(*)
FROM (SELECT DISTINCT u_id, sail_id
FROM table) AS sub;
3)您可以结合使用子查询GROUP BY
:
SELECT COUNT(*)
FROM (SELECT u_id, sail_id
FROM table
GROUP BY u_id, sail_id) AS sub;
4)最后一种可能性是使用:
SELECT COUNT(DISTINCT CONCAT(u_id,',',sail_id))
FROM table;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句