MYSQL 2 个值没有重复
MYSQL no duplicate of 2 values
我找不到这个确切问题的答案,尽管我确定信息在此处某处。
我有一个 python 脚本可以将股票数据添加到数据库中。每个股票数据库有 ~1000 行,其中 'ticker' 是股票名称,'time' 是日期(每天 1 行)。
当我 运行 我的更新脚本时,我想替换数据库中的最新行,以防它在当天结束前更改。
有没有办法让 'time' 与 'ticker' 相比是独一无二的?
使用这个 sql 我能够排序并且只得到我想要的数据,但它不会从数据库中删除多余的数据。
SELECT distinct open, high, low, close, volume, time FROM security WHERE security.ticker='%s' order by time DESC limit 100" % ticker
您可以添加复合主键,由 (ticker, time) 对组成
您可以在 (ticket, time)
上创建唯一索引(令人困惑的是,名为 time
的内容表示没有时间部分的日期,而列 date
有一个日期和一个时间...但似乎这就是您的数据模型的结构)。
create unique index on security(ticker, date);
然后,您可以在脚本中使用 insert ... on duplicate key
语法。看起来像:
insert into security (ticker, time, date, open, ... )
values (:ticker, :time, :date, :open)
on duplicate key update
date = values(date),
open = values(open),
...
我找不到这个确切问题的答案,尽管我确定信息在此处某处。
我有一个 python 脚本可以将股票数据添加到数据库中。每个股票数据库有 ~1000 行,其中 'ticker' 是股票名称,'time' 是日期(每天 1 行)。
当我 运行 我的更新脚本时,我想替换数据库中的最新行,以防它在当天结束前更改。
有没有办法让 'time' 与 'ticker' 相比是独一无二的?
使用这个 sql 我能够排序并且只得到我想要的数据,但它不会从数据库中删除多余的数据。
SELECT distinct open, high, low, close, volume, time FROM security WHERE security.ticker='%s' order by time DESC limit 100" % ticker
您可以添加复合主键,由 (ticker, time) 对组成
您可以在 (ticket, time)
上创建唯一索引(令人困惑的是,名为 time
的内容表示没有时间部分的日期,而列 date
有一个日期和一个时间...但似乎这就是您的数据模型的结构)。
create unique index on security(ticker, date);
然后,您可以在脚本中使用 insert ... on duplicate key
语法。看起来像:
insert into security (ticker, time, date, open, ... )
values (:ticker, :time, :date, :open)
on duplicate key update
date = values(date),
open = values(open),
...