如何在SQLite中从表中删除多行

如何在SQLite中从表中删除多行,sqlite,subquery,sql-delete,Sqlite,Subquery,Sql Delete,我有一个子查询,如下所示: 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 =

我有一个子查询,如下所示:

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
  ID1       ID2

 1689       1709
 1709       1689
 1782       1709
 1911       1247
 1247       1468
 1641       1468
现在我必须从如下格式的表中删除这两行:

     ID1    ID2

    1641    1468
    1911    1247
  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));
但它并没有按预期的那样工作,它并不是只删除那些行

然后,我尝试使用内部连接解决这个问题,但是SQLite中没有与DELETE函数相关联的内部连接功能

我怎样才能做到这一点


请帮助

立即比较这两个值:

DELETE FROM Likes
WHERE (ID1, ID2) IN (SELECT ... your original query ...);
需要SQLite 3.15或更高版本。 如果使用的是早期版本,则必须在单独的步骤中使用单列主键(
rowid
,或声明为整数主键的任何内容)查找要删除的行:

DELETE FROM Likes
WHERE rowid IN (SELECT Likes.rowid
                FROM Likes
                JOIN (SELECT ... your original query ...) AS IDs
                  ON Likes.ID1 = IDs.ILID1
                 AND Likes.ID2 = IDs.ILID2);

我正在做斯坦福拉古塔SQL在线课程,看起来他们在使用指定版本之前的SQLite版本来完成这项工作。有没有别的办法呢。