如何根据另一个表中的值删除一个表中的记录

时间:2014-11-19 23:51:45

标签: sql oracle

我需要根据table2中的值删除table1中的同一行。

我试过了:

DELETE FROM project.wish_list
  USING project.wish_list
  INNER JOIN project.book ON project.wish_list.quantity = project.book.quantity
  WHERE (project.wish_list.quantity = 0);

如果表quantity = 0中有book,则查询应删除wish_list中的行(等于isbn)。

wish_listbook是类似的表格。

有可能吗?

wish_list quantitybook表中ISBN title ------------------- 123 Apples <----- delete 123 Apples <----- delete 123 Apples <----- One only has to remain 1234 Pineapple <----- NO DELETE 为0的所有isbn的数量更新为-1?

编辑:删除重复的ISBN等于

{{1}}

2 个答案:

答案 0 :(得分:3)

这个问题不太清楚。听起来像是:删除wish_list表中数量为0的图书的所有book条目?

DELETE FROM wish_list
  WHERE isbn IN ( SELECT isbn
                    FROM book
                    WHERE quantity = 0 );

或更新:

UPDATE wish_list
  SET quantity = -1
  WHERE isbn IN ( SELECT isbn
                    FROM book
                    WHERE quantity = 0 );

更新:从wish_list删除重复项(无论数量多少)。请测试,我没有:

DELETE FROM wish_list
  WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM wish_list GROUP BY isbn);

答案 1 :(得分:0)

对不起,我回答了错误的问题。