使用内部连接删除时如何在日期之间搜索

hgqdbh6s  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(260)

您好,我正在尝试使用此代码段在一段时间内搜索表中的重复项。

FROM
    table WHERE Start_Date BETWEEN '2018-07-01' AND '2018-07-31'
GROUP BY Policy_Number
HAVING COUNT(Policy_Number) > 1;

这将在所需日期内生成表中的所有重复记录及其计数。
现在,我正试图删除这些重复的记录使用这个片段使用这个片段我也发现网上

DELETE t1 FROM table t1
        INNER JOIN
    table t2 
WHERE 
    t1.id < t2.id AND t1.Policy_Number = t2.Policy_Number AND Start_Date BETWEEN '2018-07-01' AND '2018-07-31';

但我总是犯这个错误
where子句中的“开始日期”列不明确
请我如何更正这个删除重复我想删除谢谢!!

ymzxtsji

ymzxtsji1#

一个例子是有效的 SELECT table.Number FROM table INNER JOIN table2 ON table.ID = table2.ID WHERE checkInDate BETWEEN '2015-09-12' AND '2015-09-13';

cedebl8k

cedebl8k2#

在开始日期前定义别名

SET OPTION SQL_BIG_SELECTS = 1

DELETE t1 FROM table t1
        INNER JOIN
    table t2 
WHERE 
    t1.id < t2.id AND t1.Policy_Number = t2.Policy_Number AND t1.Start_Date BETWEEN '2018-07-01' AND '2018-07-31'
bvpmtnay

bvpmtnay3#

这样写 t1.Start_Date 它的工作
尝试在执行select之前作为查询运行:

SET SQL_BIG_SELECTS=1;

DELETE t1 FROM table t1
        INNER JOIN
    table t2 
WHERE 
    t1.id < t2.id AND t1.Policy_Number = t2.Policy_Number AND t1.Start_Date BETWEEN '2018-07-01' AND '2018-07-31';

因为你创造了 t1 and t2 使用同一个表 table 所以两个都有 start_date 这就是为什么它的给予 Column 'Start_Date' in where clause is ambiguous 错误

相关问题