我想从表“Book”中删除行,其中之前出现了两个列。
我成功地选择了应该删除的行的 ID,如下所示:
SELECT all_dupes.book_id
FROM (SELECT *
FROM Book as BBook NATURAL JOIN Book as BBBook
WHERE book_id NOT IN (SELECT book_id
FROM Book as BBook NATURAL JOIN Book as BBBook
GROUP BY buying_price,
selling_price
HAVING Count(*) = 1
ORDER BY book_id)
ORDER BY book_id) AS all_dupes
WHERE book_id NOT IN (SELECT book_id
FROM Book as BBook NATURAL JOIN Book as BBBook
GROUP BY buying_price,
selling_price
HAVING Count(*) >= 2
ORDER BY book_id);
…但是当我尝试删除行时
DELETE FROM Book
WHERE book_id IN (
<expression as above without tailing ;>
) ;
我收到一个错误ERROR 1093 (HY000): Table 'Book' is specified twice, both as a target for 'DELETE' and as a separate source for data
我已经尝试为表格起别名并自然地将表格加入到自身中,就像其他有关此问题的问题中所建议的那样。
此外,我在这里阅读了相当多的问题,但它们大多非常具体,我不知道如何通过那里提供的答案来更改我的删除查询。
为了完成这项工作,我必须进行哪些更改?拆分表达式不是一种选择(意味着不能有两个;
,而只有一个表达式)。
使用的数据库:MariaDB