繁体   English   中英

查找具有相同列值而不是另一列值的行

[英]Find rows that have one column value same but not the other

我有这样的表结构:

ProductId | Parentid | Name

1 | 1 | Abc

2 | 1 | Abc

3 | 2 | Xyz

4 | 3 | Xyz

5 | 3 | Abc

我需要一个查询来查找这样的行,这些行的parentid与其他行相同但名称不同于另一行。

例如:查询应该获取下面的结果,因为两个行的parentid相同但名称不相同。

4 | 3 | Xyz

5 | 3 | Abc

有人可以帮助形成查询吗?

一种方法是:

SELECT ProductId, ParentId, Name
FROM mytable 
WHERE ParentId IN (
  SELECT Parentid
  FROM mytable
  GROUP BY Parentid
  HAVING MIN(Name) <> MAX(Name))

SQL小提琴演示

您也可以使用INNER JOIN

SELECT ProductId, m.ParentId, Name
FROM mytable m
INNER JOIN (SELECT Parentid
            FROM mytable
            GROUP BY Parentid
            HAVING MIN(Name) <> MAX(Name)) t
ON m.ParentId = t.ParentId            

SQL小提琴演示

最后要注意的是,如果您希望Name列中的所有值都是不同的,那么您必须使用以下HAVING子句:

HAVING COUNT(*) > 1  AND COUNT(DISTINCT Name) = COUNT(*)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM