[英]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.