sql - SQL - 查询至少出现两次的名称
问题描述
因此,我试图找到一种方法来查询具有属性“name”的表“people”,并且我想查询至少出现两次的名称,而结果应该是不同的。
我正在考虑创建两个别名表,并加入名称,但我无法弄清楚。
这是我尝试过的:
SELECT DISTINCT name
FROM people AS S1
INNER JOIN people AS S2 USING name
WHERE S2.lastname <> S2.surname
我所做的姓氏部分是为了删除由于两个表相等而出现的名字的情况(甚至不确定这是否正确)。但无论哪种方式,这已经失败,因为语法错误。
将不胜感激一些帮助!提前致谢。
解决方案
如果您只需要名称,聚合是一种简单的方法:
select name
from persons
group by name
having count(*) > 1;
如果您想要原始行,请使用窗口函数:
select p.*
from (select p.*, count(*) over (partition by name) as cnt
from persons p
) p
where cnt >= 2;
推荐阅读
- python-3.x - 检测动词是弱动词,否则是强动词
- r - 将列添加到数据框列表并进行增量添加/循环通过 df 进行简单添加
- javascript - 在测试中使用时,来自 NodeJS Web 服务的布尔值不是布尔值
- excel - 在模块和表单之间传递变量
- unity3d - Unity 3D 的相机预览中不显示图像作为纹理的 3D 平面
- reactjs - React-hooks 弹出上下文 - 如何?
- python-3.x - TypeError: 'int' object is not iterable ...只需要 List 中的字符串值
- mongodb - mongoDB查询以获取用户未关注的所有用户
- pg-promise - 如何设置与 statement_timeout 相关的 query_timeout?
- outlook - 获取outlook商务电脑的smtp服务器