使用Postgres

时间:2017-04-29 18:30:23

标签: postgresql

不确定标题是否足够描述(抱歉英文不好),但我的问题是我需要找到所有行中具有相同值的行。

通过示例可能更容易理解我的意思: 我有一个名为Catalog的表,其属性为motortype,motorpart和partnumber,其中motortype和motorpart为VARCHAR,partnumber为int。

在所有的摩托车类型中都使用了一些partnumbers,这是我有兴趣寻找的那些部分号。

我很难看到如何解决这个问题,所以非常感谢任何帮助!

编辑: 对不起,如果问题不严重或不好。我已经更新了表模式,一些示例数据和我想要的结果:

CREATE TABLE Catalogue (
motortype VARCHAR,
motorpart VARCHAR,
partnumber int,
PRIMARY KEY (partnumber)
);

示例数据:

INSERT INTO Catalogue VALUES ('M1', 'Brakes', 1);
INSERT INTO Catalogue VALUES ('M2', 'Brakes', 1);
INSERT INTO Catalogue VALUES ('M3', 'Brakes', 1);
INSERT INTO Catalogue VALUES ('M1', 'Gasket', 2);
INSERT INTO Catalogue VALUES ('M2', 'Gasket', 2);
INSERT INTO Catalogue VALUES ('M3', 'Pedal', 3);

期望的结果:

| motorpart | partnumber |
|-----------|------------|
| Brakes    |          1 |

希望这更好地制定!

1 个答案:

答案 0 :(得分:0)

如果有3种不同类型,您可以使用下一个查询:

select   motorpart
from     Catalogue
group by motorpart
having   count(distinct motortype) >= 3;

如果您不知道号码:

select   motorpart
from     Catalogue
group by motorpart
having   count(distinct motortype) = (select distinct motortype 
                                      from   Catalogue);

Rextester here