选择在列中具有相同值且在另一列中具有不同值的记录
问题描述:
在我的表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这里(我希望它扮演,有时页面冻结) 我的DB
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");
答
的小转储也许这就是你想要什么?
select *, count(*) from (select * from INVENTORY group by code, version)
group by code
having count(*)>1
也就是说,首先要由感兴趣的两列汇总表,然后选择从该表中,其中也有代码至少两个不同值的行。
+0
您的方法适用于我!谢谢! – yaylitzis
+0
非常欢迎。祝你好运! –
你可以发布你使用的查询吗? –
请包含此表的'.dump',这会让它更容易玩。 –
@kiner_shah我试着从这里的解决方案http://stackoverflow.com/questions/2456747/sqlite-get-records-with-same-column-value与变体的方式。 – yaylitzis