下面这条删除的SQL实际执行没起作用,也没有报错,有没有锁表。
DELETE
FROM
month_word_record
WHERE
(
province_code,
create_time,
word_name,
word_num
) IN (
SELECT
province_code,
create_time,
word_name,
word_num
FROM
(
SELECT
province_code,
create_time,
word_name,
word_num
FROM
month_word_record
GROUP BY
province_code,
create_time,
word_name,
word_num
HAVING
count(*) > 1
) a
)
AND idword NOT IN (
SELECT
min(idword)
FROM
(
SELECT
min(idword)
FROM
month_word_record
GROUP BY
province_code,
create_time,
word_name,
word_num
HAVING
count(*) > 1
) b
)
AND create_time >= '2021-06-01';
请问SQL哪地方有问题呢?
我把SQL又包装了一层删除,执行成功了。
DELETE
FROM
month_word_record
WHERE
idword IN (
SELECT
c.idword
FROM
(
SELECT
idword
FROM
month_word_record
WHERE
(
province_code,
create_time,
word_name,
word_num
) IN (
SELECT
province_code,
create_time,
word_name,
word_num
FROM
(
SELECT
province_code,
create_time,
word_name,
word_num
FROM
month_word_record
GROUP BY
province_code,
create_time,
word_name,
word_num
HAVING
count(*) > 1
) a
)
AND idword NOT IN (
SELECT
min(idword)
FROM
(
SELECT
min(idword)
FROM
month_word_record
GROUP BY
province_code,
create_time,
word_name,
word_num
HAVING
count(*) > 1
) b
)
AND create_time >= '2021-06-01'
) c
);