sqlite如何过滤不一致的记录

How to filter inconsistent records in sqlite

假设我的 SQLite table 具有以下记录:

recID productID productName
1 1 Product A
2 2 Product B
3 2 Product C
4 3 Product D
5 3 Product D

recID = 主键,自增。

如果我运行:

SELECT productID, productName 
FROM table 
GROUP BY productID, productName

结果是:

productID productName
1 Product A
2 Product B
2 Product C
3 Product D

如您所见,productID 2 的 productName 不一致:Product B and Product C。我如何 运行 查询只是为了检测不一致的?例如,我希望结果为:

productID productName
2 Product B
2 Product C

使用 EXISTS 得到超过 1 productNameproductID:

SELECT t1.productID, t1.productName 
FROM tablename t1
WHERE EXISTS (
  SELECT *
  FROM tablename t2
  WHERE t2.productID = t1.productID AND t2.productName <> t1.productName 
);

或者,对于小型数据集,在子查询中使用聚合计算每个 productIDproductName 的不同数量,使用运算符 IN:

SELECT productID, productName 
FROM tablename
WHERE productID IN (
  SELECT productID
  FROM tablename
  GROUP BY productID
  HAVING COUNT(DISTINCT productName) > 1
);