![](/img/trans.png)
[英]Laravel Eloquent PHP how to get all rows in MySQL table with unique column values as keys
[英]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.