我是一个SQL初学者。我有一个表中MariaDB的以下字段 (我已经添加了ID具有自动递增。)
现在,我需要除去具有相同的日期行。 一种方式做到这一点,如果这是熊猫的数据帧,
df = df.drop_duplicates ()
我怎样才能在SQL这样做呢?
样本数据
date/open/high/low/close/volume
2019.02.04 00:00:00 13.34303 13.34303 13.34143 13.34303 4
2019.02.04 00:01:00 13.34303 13.34303 13.34303 13.34303 2
★ 2019.02.04 00:02:00 13.34303 13.34323 13.34303 13.34323 2
★2019.02.04 00:02:00 13.34303 13.34323 13.34303 13.34323 2
2019.02.04 00:04:00 13.33663 13.33743 13.33623 13.33733 86
2019.02.04 00:05:00 13.33734 13.33734 13.33613 13.33613 70
所需数据
2019.02.04 00:00:00 13.34303 13.34303 13.34143 13.34303 4
2019.02.04 00:01:00 13.34303 13.34303 13.34303 13.34303 2
★2019.02.04 00:02:00 13.34303 13.34323 13.34303 13.34323 2
2019.02.04 00:03:00 13.34333 13.34333 13.33664 13.33664 14
2019.02.04 00:04:00 13.33663 13.33743 13.33623 13.33733 86
2019.02.04 00:05:00 13.33734 13.33734 13.33613 13.33613 70
我的环境详细信息:
Windows版本:家庭64位 XAMPP版本:7.2.8控制面板 版本:3.2.2 [编译:2015年11月12日] 通过TCP / IP 127.0.0.1 不使用MariaDB的SSL 34年1月10日,MariaDB的 - mariadb.org二进制分发协议版本:10 字符集:UTF-8的Unicode(UTF-8)
发表评论
为了回答命令
任何建议表示赞赏!
如果您正在寻找删除每一个记录其日期多次出现在餐桌上,你可以进行如下操作:
DELETE t
FROM mytable t
INNER JOIN (
SELECT datetime FROM mytable GROUP BY datetime HAVING COUNT(*) > 1
) t1 ON t1.datetime = t.datetime;
你的问题进行修改后,我知道你想删除重复的行之一,同时保持其他。
要做到这一点,你需要一个列,用于唯一标识重复的组,每个组的记录。让我们把该列id
。
DELETE t FROM mytable t
INNER JOIN mytable t1 ON t1.datetime = t.datetime AND t1.id < t.id;
如果关于在整个行重复,我会建议重新加载表。您可以使用临时表用于此目的:
create table temp_t as
select distinct *
from t;
然后,你可以把这个回原表:
truncate table t;
insert into t
select *
from temp_t;
通常情况下,我将包括在insert
所有列。但是,对于这种类型的处理,代码中使用select *
生成临时表,它只是将回到原始表。
通过使用truncate
/ insert
,为您节省大量的开销日志记录,并锁定该表。