2012-11-25 47 views
2

我一直在努力研究如何从RENTALLINE_1的RENTALLINE_ID中删除行,然后从RENTAL_1中删除RENTAL_ID。我有选择语句查找我想要删除的确切值。它发现3年以上的记录。我正在使用带命令行界面的SQLPlus。使用INNER JOIN进行删除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) 

在此先感谢您的帮助!

回答

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)) 
+0

感谢您的回复,我收到第1行“DELETE rental_1,rentalline_1”上的错误“命令未正确结束”。不要以为你知道为什么? – user1798140

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被自动删除。

+0

感谢首先误解了这一点,但我认为这将解决问题,因为我可以从租赁表中删除并错过使用内部连接我想?谢谢 – user1798140

+0

是的,这就是主意 –

+0

嘿,感谢您的回复,但我尝试了下面的第一个,但我相信你的工作也将为任何与我类似的问题的人:)再次感谢 – user1798140