0

我有一个从网络服务同步数据的 iOS 应用程序。每隔一段时间,一条记录就会被重复,我需要能够清除重复。

我可以使用以下 SQL 轻松检查重复项:

SELECT ZOrderGUID, COUNT(*) AS Cnt
FROM ZPurchaseOrder 
WHERE ZManufacturerID=18
GROUP BY ZOrderGUID
HAVING Count(*) > 1

我需要能够使用这些结果来删除其中的一个 - 它通常只是 2 条记录。

我试图运行这个 SQL:

SELECT LIMIT 1 * FROM ZPurchaseorder WHERE ZManufacturerID=18 AND ZOrderGUID=
(SELECT ZOrderGUID
FROM ZPurchaseOrder 
WHERE ZManufacturerID=18
GROUP BY ZOrderGUID
HAVING Count(*) > 1)

为了隔离我发现的第一个骗子,但在测试中它锁定了我用来测试我的 SQL 脚本的 SQLite 数据库浏览器应用程序。

4

1 回答 1

0

您可以像这样选择第一条记录(LIMIT查询末尾出现):

SELECT *
FROM ZPurchaseorder
WHERE ZManufacturerID=18
  AND ZOrderGUID = (SELECT ZOrderGUID
                    FROM ZPurchaseOrder 
                    WHERE ZManufacturerID=18
                    GROUP BY ZOrderGUID
                    HAVING Count(*) > 1)
LIMIT 1
于 2013-08-06T07:19:05.787 回答