我有 table :
+----------------+
| 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;
关于php - 如何在两列中不重复计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33988413/