【问题标题】:How to delete rows from another table in SQLITE?如何从 SQLITE 中的另一个表中删除行?
【发布时间】:2022-01-21 15:08:15
【问题描述】:

我有这些表

AT_WAR主键 Ship_Name 和 War_ID

Ship_Name War_ID
First 1
Second 2
Third 3

SHIP主键 Ship_Name

Ship_Name Ship_Type_ID
First S.1
Second S.2
Third S.3
FOURTH S.4

我想从 SHIP 表中删除未参加战争的船只。 如果我想显示参与战争的船只,我可以使用这个命令:

SELECT DISTINCT SHIP.Ship_Name FROM SHIP
INNER JOIN AT_WAR ON SHIP.Ship_Name = AT_WAR.Ship_Name

我正在使用这个命令,但是没有用

DELETE FROM SHIP 
INNER JOIN AT_WAR ON SHIP.Ship_Name = AT_WAR.Ship_Name
WHERE AT_WAR.Ship_Name IS NULL;

提前谢谢你!

【问题讨论】:

    标签: sql sqlite left-join inner-join sql-delete


    【解决方案1】:

    SQLite 不支持 DELETE 语句中的连接(目前),因此一种选择是 NOT EXISTS

    DELETE FROM SHIP
    WHERE NOT EXISTS (SELECT 1 FROM AT_WAR WHERE AT_WAR.Ship_Name = SHIP.Ship_Name);
    

    请参阅demo

    或者,NOT IN

    DELETE FROM SHIP
    WHERE Ship_Name NOT IN (SELECT Ship_Name FROM AT_WAR);
    

    请参阅demo

    【讨论】:

      猜你喜欢
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      相关资源
      最近更新 更多