在我的表INVENTORY
中,有3列varchar
代码,版本,说明。
e.g
code || version || description
--------------------------
AS100 || 01 || description
AS100 || 02 || description
AS100 || 02 || description
AS100 || 02 || description
AS200 || 01 || description
AS300 || 01 || description
AS300 || 01 || description
我想选择所有具有相同产品和多个版本的产品。在上表中,此查询将返回:
AS100
- 01
- description
AS100
- 02
- description
我尝试使用HAVING
声明,但我没有得到上述结果..
例如,我试过这个:
SELECT code, version, Count(*) FROM INVENTORY
GROUP BY version
HAVING Count(*) =1
但它会返回出现一次的所有代码。
我在这里创建了一个SQLFIDDLE(我希望它会播放,有时页面会冻结) 我的数据库的小转储
CREATE TABLE "INVENTORY" (
"code" VARCHAR,
"version" VARCHAR,
"description" VARCHAR
)
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "01", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS200", "02", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS300", "01", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS300", "01", "description");
答案 0 :(得分:2)
也许这就是你想要的?
select *, count(*) from (select * from INVENTORY group by code, version)
group by code
having count(*)>1
也就是说,首先根据感兴趣的两列创建一个表,然后从该表中选择至少有两个不同的代码值的行。