Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 无计数功能的计数记录_Mysql_Sql - Fatal编程技术网

Mysql 无计数功能的计数记录

Mysql 无计数功能的计数记录,mysql,sql,Mysql,Sql,人表: ID Name 1 Peter 2 Peter 3 Peter 4 Tom 5 Tom 6 Mary 7 Paul 如果我想选择一个名称,该名称在human表中包含3次或更多次,我可以这样编写查询: Select name, count(name) From Human Group By name Having count(name) >= 3 但是我现在需要编写一个查询,而不需要使用and count函数。那么,如何实现这个查询呢 WITH ct

人表:

ID  Name
1   Peter
2   Peter
3   Peter
4   Tom
5   Tom
6   Mary
7   Paul
如果我想选择一个名称,该名称在human表中包含3次或更多次,我可以这样编写查询:

Select name, count(name)
From Human
Group By name
Having count(name) >= 3
但是我现在需要编写一个查询,而不需要使用and count函数。那么,如何实现这个查询呢

WITH cte
AS (
    SELECT NAME
        ,SUM(1) AS NameCount
    FROM Human
    GROUP BY NAME
    )
SELECT *
FROM cte
WHERE NameCount >= 3


分组依据
,无
拥有
,无
计数
-但有一个双重自我
加入
。这没什么意义,但很有效

select distinct t1.name
from tablename t1
join tablename t2 on t1.name = t2.name and t1.id <> t2.id
join tablename t3 on t1.name = t3.name and t1.id <> t3.id and t2.id <> t3.id 
选择distinct t1.name
来自表名t1
将tablename t2连接到t1.name=t2.name和t1.id t2.id
将tablename t3连接到t1.name=t3.name和t1.id t3.id和t2.id t3.id
顺便说一句,告诉你的老师你在网上找到了这个解决方案

此处演示:


您被禁止使用的用例/任务是什么?
COUNT()
?我不理解您的意思。你的意思是为什么我不使用计数函数?是的,我的意思是。呃……我的老师给了我一个额外的挑战,让我在没有或计数函数的情况下实现查询。好吧,如果这是一个额外的挑战,为什么不简单地告诉他们你无法解决这个问题(也许需要一个提示)。在这里寻求解决方案有什么好处?MySQL不支持CTE,据我所知,这仍在计算中。对不起,我以为这与Sql Server有关。我从来没有想到过这个解决方案+1哈哈哈,当然我会从互联网上告诉我的老师答案。非常感谢。
select distinct t1.name
from tablename t1
join tablename t2 on t1.name = t2.name and t1.id <> t2.id
join tablename t3 on t1.name = t3.name and t1.id <> t3.id and t2.id <> t3.id