【发布时间】:2017-08-08 12:57:52
【问题描述】:
我有一个这样的子查询:
SELECT INTER1.LID1 AS ILID1,INTER1.LID2 AS ILID2 FROM
(SELECT L1.ID1 AS LID1, L1.ID2 AS LID2 FROM Friend F1
INNER JOIN Likes L1
ON F1.ID1 = L1.ID1 AND F1.ID2 = L1.ID2) INTER1
LEFT JOIN Likes L2
ON (INTER1.LID1 = L2.ID2 AND INTER1.LID2 = L2.ID1)
WHERE (L2.ID1 IS NULL AND L2.ID2 IS NULL)
这个的输出如下:
ID1 ID2
1641 1468
1911 1247
现在我必须从 LIKES 表中删除这两行,其格式如下:
ID1 ID2
1689 1709
1709 1689
1782 1709
1911 1247
1247 1468
1641 1468
我尝试在 SQLite 中使用以下查询来完成此操作:
DELETE FROM Likes
WHERE EXISTS
(SELECT INTER1.LID1 AS ILID1,INTER1.LID2 AS ILID2 FROM
(SELECT L1.ID1 AS LID1, L1.ID2 AS LID2 FROM Friend F1
INNER JOIN Likes L1
ON F1.ID1 = L1.ID1 AND F1.ID2 = L1.ID2) INTER1
LEFT JOIN Likes L2
ON (INTER1.LID1 = L2.ID2 AND INTER1.LID2 = L2.ID1)
WHERE (L2.ID1 IS NULL AND L2.ID2 IS NULL));
但它没有按预期工作,它不只删除那些行。
然后我尝试使用 INNER JOIN 解决这个问题,但是 SQLite 中没有 INNER JOIN 与 DELETE 函数相关的功能。
我怎样才能使这项工作。
请帮忙
【问题讨论】:
标签: sqlite subquery sql-delete