使用INNER JOIN sqlplus时删除

时间:2012-11-25 12:13:29

标签: sql oracle inner-join sqlplus

我一直在努力弄清楚如何从RENTALLINE_1中的RENTALLINE_ID中删除行,然后从RENTAL_1中删除RENTAL_ID。我有select语句,它找到我想要删除的确切值。它找到了超过3年的记录。我正在使用SQLPlus和命令行界面。

select rentalline_1.rentalline_ID,
       rentalline_1.tool_store_id,
       rentalline_1.rental_id,
       rentalline_1.qty,
       rental_1.datein
from rental_1
  inner join rentalline_1 on rental_1.rental_id = rentalline_1.rental_id
where MONTHS_BETWEEN (SYSDATE, DATEIN) > (36)

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以向数据库添加约束吗?如果您有外键约束,如:

ALTER TABLE rentalline_1 ADD CONSTRAINT fk_rental FOREIGN KEY (rental_id) REFERENCES rental_1 (rental_id) ON DELETE CASCADE;

然后删除rental_1表中的行将导致rentalline_1中的相应行自动删除。

答案 1 :(得分:0)

我无法在这里测试oracle数据库,但我希望

DELETE rental_1, rentalline_1
from rental_1
  inner join rentalline_1 on rental_1.rental_id = rentalline_1.rental_id
where MONTHS_BETWEEN (SYSDATE, DATEIN) > (36)
你也可以用

来摆弄它
DELETE from
( SELECT * 
from rental_1
  inner join rentalline_1 on rental_1.rental_id = rentalline_1.rental_id
where MONTHS_BETWEEN (SYSDATE, DATEIN) > (36) )