gpt4 book ai didi

mysql - 避免重复行,而不引用键或索引?

转载 作者:行者123 更新时间:2023-11-30 23:05:04 25 4
gpt4 key购买 nike

我有一个 MySQL 表,其中每一行都是一集电视剧。它看起来像这样:

     showTitle  |  season   |  episode   |  episodeTitle  |  airdate  |  absoluteEpisode
----------------------------------------------------------------------------------------
The X-Files 5 12 Bad Blood 1998-02-22 109
The X-Files 5 13 Patient X 1998-03-01 110

(其中 absoluteEpisode 是从第 1 集开始计算的总集数。)

它是使用我编写的 Ruby 程序填充的,该程序从 Web 服务获取数据。我想定期再次运行该程序以获取新剧集。那么问题就变成了,如何避免添加已经存在的行的重复项?此表中的任何列都不适合用作主键或唯一字段。

我有两个想法。第一个是创建一个新列 md5,其中包含所有这些值的 MD5 哈希值,并将其设为唯一列,以防止添加具有相同数据的两行。这似乎可行,但会很困惑。

我的第二个是使用 this solution from StackOverflow .但我不能完全让它发挥作用。我的 SQL 查询是

INSERT INTO `tv`.`episodes` (showTitle,episodeTitle,season,episode,date,absoluteEpisode) 
SELECT '#{show}','#{title}','#{y['airdate']}' FROM `tv`.`episodes`
WHERE NOT EXISTS (SELECT * from `tv`.`episodes`
WHERE showTitle='#{show}' AND episodeTitle='#{title}' AND season='#{season_string}' AND episode='#{y['seasonnum']}' AND date='#{y['airdate']}' AND absoluteEpisode='#{y['epnum']}'")

#{...} 位是 Ruby 变量。这让我得到了明显的错误 你的 SQL 语法有错误

翻阅我能找到的有关该主题的书籍和文档,我仍然不确定如何正确执行此查询,或者这是否不是解决我的问题的明智方法。如果有任何建议,我将不胜感激!

最佳答案

为什么不从showTitle, season, episode 中创建一个主键,这将解决问题,因为我猜是因为剧集号不能在同一季下重复,这适用于同一个电视剧, 例子

x-files==>第 1 季==>第 1 集这将是一个单元的主键

关于mysql - 避免重复行,而不引用键或索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22261946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com