【发布时间】:2019-07-25 19:11:19
【问题描述】:
我想删除表中的重复数据。但是我的 sql sript 在查询中返回错误 (1064)。
我在我的 MySQL 服务器上尝试了两个单独的 sql 语句,但它一直抛出语法错误。
表格列:
msisdn_lte
batch_id
file_id
date_key
call_timestamp
data_volume
da_value_before_call
da_value_after_call
served_account
source_file_nm
quote
pull_date_time
所有具有完全相同数据的插入 2 次。即每个不同的数据都有两倍
第一句话
DELETE A
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY * ORDER BY call_timestamp) AS rn
FROM broadband_usage_history
) A
WHERE A.rn > 1;
第二句话
WITH usage_cte AS
(
SELECT *, ROW_NUMBER() Over(Partition BY call_timestamp order by call_timestamp) AS row_number
FROM broadband_usage_history
)
SELECT * FROM usage_cte ;
我希望获得表中每个数据的一个输入,但我什至无法运行查询。
【问题讨论】:
-
我什至没有查看您的查询是否有任何语法错误突出,但第一个问题是您使用的是 MySQL 8.0.2 还是更高版本?那是第一次引入像
ROW_NUMBER()这样的窗口函数的时候。 mysqlserverteam.com/mysql-8-0-2-introducing-window-functions -
如何定义“重复”?即使在
call_timestamp中,所有列中的数据是否应该相等? -
@PaulSpiegel 重复,因为我们在所有列中都有相同的数据
标签: mysql common-table-expression window-functions