我搜索了近一个小时来解决我的问题,但我找不到任何东西。
所以:
我创建了一个名为s(供应商)的表格,其中列出了一些零件供应商,如下所示:
insert into S(sno, sname, status, city)
values ('S1', 'Smith', 20, 'London'),
('S2', 'Jones', 10, 'Paris'),
('S3', 'Blake', 30, 'Paris'),
('S4', 'Clark', 20, 'London'),
('S5', 'Adams', 30, 'Athens');
现在我想在列表" city"中检查此表的双重条目,所以这将是伦敦和巴黎,我想通过sno对其进行排序并将其打印出来。
我知道Postgres比在mySQL中有点难,我试过这样:
SELECT sno, COUNT(city) AS NumOccurencies FROM s GROUP BY sno HAVING ( COUNT (city) > 1 );
但我得到的只是一张空桌子:(。我尝试了不同的方式,但它总是一样的,我不知道该怎么做才能说实话。我希望有些人可以帮助我在这里:)。
Greetings Max
答案 0 :(得分:0)
你正在考虑它有点倒退。通过sno
分组,您发现所有这些行都具有相同的sno
,而不是city
。试试这个:
SELECT
city
FROM
S
GROUP BY
city
HAVING
COUNT(*) > 1
然后,您可以将其用作子查询来查找所需的行:
SELECT
sno, sname, status, city
FROM
S
WHERE
city IN
(
SELECT
city
FROM
S
GROUP BY
city
HAVING
COUNT(*) > 1
)