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

PHP MySQL如何获取列完全唯一的行数,php,mysql,Php,Mysql,我有一张像这样的桌子 id + kID -------------------------- 0 | 3 1 | 6 2 | 7 3 | 6 4 | 7 5 | 5 我想做的是找到kID只出现一次的行数。所以在这种情况下,变量的值应该是2

我有一张像这样的桌子

id + kID -------------------------- 0 | 3 1 | 6 2 | 7 3 | 6 4 | 7 5 | 5 我想做的是找到kID只出现一次的行数。所以在这种情况下,变量的值应该是2,因为kID:3和5只出现一次,所以我试图计算它,而忽略其他所有内容。我真的很困惑,谢谢你的帮助。

这将向孩子们展示只发生一次的情况:

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

然后,要获得这些的总计数:

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

这将显示仅出现一次的孩子:

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

然后,要获得这些的总计数:

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

试试这个

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

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(*) 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 count(*) from 
(
    select kID, COUNT(*) [c] from tableName
    group by kID
) t
where t.c = 1

您可以通过一个子选择来完成。这应该是可行的,但可能不是非常有效:

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

您可以通过一个子选择来完成。这应该是可行的,但可能不是非常有效:

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

还有一种方法。只要id是表的主键,或者kid上有唯一的约束,id:

测试时间


一个关于kid,id的索引将提高效率-并且只会进行一次计数,而不是2次。

还有一种方法可以做到这一点。只要id是表的主键,或者kid上有唯一的约束,id:

测试时间

一个关于kid,id的索引将提高效率-并且只进行一次计数,而不是2次