【发布时间】:2013-02-02 04:14:20
【问题描述】:
cur.execute("""INSERT INTO football.match_events(type, player, time, game_id) VALUES (%s, %s, %s, %s)""", (etype, player_id, time, game_id))
我正在完成一个项目,我在其中抓取和处理足球文本评论。此 INSERT 语句是处理黄牌的一段代码的一部分。不幸的是,随着这些评论是实时更新的,有时会有更正(尽管他们没有说更正,所以我无法过滤它们)。这导致我在一次预订中有两排,因为它在评论中出现了两次。
我正在为 SQL 语句寻找一种简单的方法来检查查询中的所有字段是否已经一起存在于表中的一行中。我希望这是有道理的。
【问题讨论】:
-
嗨,我一定是解释得不够清楚。我开始认为这不是可以在 SQL 中完成的事情。有一个主键,自动增量。但这些项目都不是独一无二的。即可以有很多相同类型的match_events,可以有很多由同一玩家执行的比赛事件,甚至可以同时执行多个比赛事件,这是我要检查的这4个变量的组合为了。也许这是我需要在 python 中做的事情..
-
您可以创建一个包含这 4 列的唯一键。
Replace/on duplicate key update将适用于任何唯一键,而不仅仅是主键。 -
嗨,谢谢。我该怎么做呢?你的意思是在我 INSERT 之前在 python 中构建它还是有办法在 phpmyadmin 中设置表格来做到这一点
-
@user2073606:您在这四列 (
UNIQUE KEY (col1, col2, col3, col4)) 上创建一个UNIQUE约束,然后在插入时使用INSERT ... ON DUPLICATE KEY UPDATE语法,MySQL 将自动更新如果它与这 4 列匹配,则改为现有行。这就是我将您链接到副本的原因。