【问题标题】:Deleting whilst using INNER JOIN sqlplus使用 INNER JOIN sqlplus 时删除
【发布时间】:2012-11-25 12:13:29
【问题描述】:

我一直在努力弄清楚如何从 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)

提前感谢您的帮助!

【问题讨论】:

    标签: sql oracle inner-join sqlplus


    【解决方案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中对应的行被自动删除。

    【讨论】:

    • 谢谢,起初误读了这个,但我认为这会解决问题,因为我可以从出租表中删除并错过使用我认为的内部连接?谢谢
    • 嘿,谢谢您的回复,但我先尝试了下面的那个,但我相信您的回复也适用于与我有类似问题的任何人:) 再次感谢
    【解决方案2】:

    我无法在这里测试 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) )
    

    【讨论】:

    • 感谢您的回复,我在第 1 行“DELETE rent_1,rentalline_1”上收到错误“命令未正确结束”。不要以为你知道为什么?
    猜你喜欢
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2021-04-23
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多