繁体   English   中英

PHP MySQL如何获取列完全唯一的行数

[英]PHP MySQL How to get the count of rows where column is completely unique

我有一张看起来像这样的桌子

id          +        kID       
--------------------------
0           |         3
1           |         6
2           |         7
3           |         6
4           |         7
5           |         5

我想做的是找到kID仅发生一次的行数。 因此,在这种情况下,变量的值应为2因为kID: 3 and 5 occurs only once所以我试图在忽略其他所有内容的同时对其进行计数。 我真的很沮丧,谢谢您的帮助。

这将显示仅发生一次的kID

SELECT kID, COUNT(kID)
FROM table
GROUP BY kID
HAVING COUNT(kID) < 2

结果

| KID | COUNT(KID) |
--------------------
|   3 |          1 |
|   5 |          1 |

观看演示

然后获得这些的总数:

SELECT Count(*) AS count 
FROM   (SELECT kid, 
               Count(kid) 
        FROM   tbl 
        GROUP  BY kid 
        HAVING Count(kid) < 2) a

结果

| COUNT |
---------
|     2 |

观看演示

尝试这个

SELECT
  id,
  count(kID) as `Count`
FROM mytable as t
GROUP BY kID
HAVING Count = 1

怎么样

select count(*) from 
(select kid, count(*) from table group by kid having count(*) = 1)

您可以执行以下操作:

select count(*) from 
(
    select kID, COUNT(*) [c] from tableName
    group by kID
) t
where t.c = 1
SELECT kID, 
COUNT(kID) 
FROM tableName
GROUP BY kID
HAVING COUNT(kID) = 1

您可以通过子选择来实现。 这应该可以工作,尽管可能效率不高:

SELECT id, kID, COUNT(1) FROM (SELECT COUNT(1),kID FROM TABLE
                               GROUP BY kID
                               HAVING COUNT = 1)

另一种方法。 只要(id)是表的主键,或者对(kid, id)有唯一约束,它将起作用:

SELECT COUNT(*) AS cnt
FROM
  ( SELECT NULL
    FROM tableX
    GROUP BY kid
    HAVING MIN(id) = MAX(id) 
  ) AS g ;

SQL-Fiddle上测试

(kid, id)的索引将提高效率-仅完成一个COUNT() ,而不是2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM