簡體   English   中英

Oracle SQL查詢表並根據結果從另一個表中刪除

[英]Oracle SQL query a table and delete from an other based on the results

所以我有下表

   CREATE TABLE Accounts (
        Acc_ID INTEGER PRIMARY KEY,
        Acc_Name VARCHAR(50) NOT NULL
    );

    CREATE TABLE City (
        Zip VARCHAR(20) PRIMARY KEY,
        CityName VARCHAR(30) NOT NULL
    );

    CREATE  TABLE Address (
        Addr_ID INTEGER PRIMARY KEY,
        Street VARCHAR(50) NOT NULL,
        HouseNo VARCHAR(10) NOT NULL,
        Zip VARCHAR(20) NOT NULL REFERENCES City ON DELETE CASCADE
    );


    CREATE TABLE Located (    
        Acc_ID INTEGER NOT NULL REFERENCES Accounts ON DELETE CASCADE,
        Addr_ID INTEGER NOT NULL REFERENCES Address ON DELETE CASCADE,
        PRIMARY KEY(Acc_ID, Addr_ID)

我想在下面使用類似的查詢,以便能夠根據選擇查詢的結果刪除行。

delete from Address where add_id=(select addr_id from Located where ACC_ID=1);

那可能嗎 ? 如果是的話如何?

您幾乎了解了它,甚至在某些情況下(當子查詢找到一行時)您的建議也可以使用。 這是更一般的情況,您只需要IN而不是=

delete from Address 
  where add_id IN (select addr_id from Located where ACC_ID=1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM