所以我有这张table
表:“tbl\U哈希”
------------------------------
| id | hash1 | hash2 | hash3 |
------------------------------
| 1 | a | b | c |
| 2 | a | b | c |
| 3 | a | g | d |
| 4 | a | g | d |
| 5 | a | g | d |
------------------------------
我只想按hash1、hash2和hash3对它们进行分组。数一数,只返回高出2的计数。
所以我用这个查询来得到我想要的值:
select CONCAT(hash1, hash2, hash3) as hashes, COUNT(*) as count from `tbl_hash` group by hashes having `count` > 2 limit 5
^^上面的查询非常有效。。
但是如果我想得到数据并计算每一行呢?预期产量:
--------------------------------------
| id | hash1 | hash2 | hash3 | count |
--------------------------------------
| 1 | a | b | c | 2 |
| 2 | a | b | c | 2 |
| 3 | a | g | d | 3 |
| 4 | a | g | d | 3 |
| 5 | a | g | d | 3 |
--------------------------------------
我还计划使用 DB::table...
1条答案
按热度按时间ttp71kqs1#
您可以将原始表联接到一个子查询,该子查询将查找每个组的计数:
请注意,我上面写的内容将完全过滤掉属于hash1/hash2/hash3组的任何原始记录,该组的计数不大于2。如果您想要所有记录,以及计数,则删除
HAVING
条款。顺便说一下,在支持分析函数的数据库中,如SQLServer和oracle,我们可以使用
COUNT
作为分析函数。在某个时候,主流版本的mysql也会支持这一点。但现在,我们只能做一个连接。