【发布时间】:2016-04-24 17:11:46
【问题描述】:
需要使用IN子句从表中删除数据,但IN子句中的记录超过1000条。查询有Group by和Having,表中的列太多!所以我不确定如何使用 TEMP 表。
查询是:
DELETE * FROM test WHERE order_num IN(
select order_num
FROM test
WHERE TO_DATE (mod_dt) BETWEEN TO_DATE ('11-JUN-15') AND TO_DATE ('17-JUL-15')
AND REGION = 'AK'
GROUP BY order_num
HAVING COUNT(order_Num) > 1) ;
【问题讨论】:
-
到底是什么问题?
-
IN子句的记录数超过1000条,报错!
-
mysql, sql-server, oracle它们都是不同的产品,请用您正在使用的正确产品标记您的问题。 -
我认为没有行会导致错误。试一试,然后去做吧
-
TO_DATE ('11-JUN-15')缺少其格式掩码。你不应该在没有TO_DATE()的情况下使用它,因为这意味着你仍然依赖默认的 NLS_DATE_FORMAT 参数来决定如何将字符串转换为日期 - 这不是一件好事!此外,年份有 4 位数字,而不是 2 位(Y2K 很久以前不是那个......是吗?!)。你应该改用TO_DATE ('11/06/2015', 'dd/mm/yyyy')之类的东西。
标签: mysql sql sql-server oracle