更新列值或重复删除它?

时间:2010-08-12 21:03:08

标签: php mysql primary-key duplicates

我有一个MySQL表,它有三列:

Authority           | MapID                   | Time
---------------------------------------------------------
animuson@forums     | 000000000000000         | 45.6758
132075829385895     | 000000000000000         | 49.7869
qykumsoy@forums     | 000000000000000         | 44.45
439854390263565     | 000000000000000         | 50.761
user@forums         | 000000000000000         | 44.9
another@auth        | 000000000000000         | 46.123
bingo@nameo         | 000000000000000         | 47.4392

我正在做的是,一旦您关联了您的帐户,它就会将管理局从您使用的任何authoirty名称更改为您的帐户ID号。因此,如果我将'animuson @ forums'和'qykumsoy @ forums'链接到我的帐户,并且我的帐户ID号是'132075829385895',那么我将有3个重复的条目,因为主键是Authority + Map ID。我只会一次更改一个权限,但是多个地图ID,所以我试图找出一种方法来将权限更改为他们的用户ID,如果它是重复的,请选择最短的时间并且只是删除另一个。这样的事情可能与MySQL有关,还是我需要使用PHP?

因此,在链接这两个帐户后,我最终会得到这个表:

Authority           | MapID                   | Time
---------------------------------------------------------
132075829385895     | 000000000000000         | 44.45
439854390263565     | 000000000000000         | 50.761
user@forums         | 000000000000000         | 44.9
another@auth        | 000000000000000         | 46.123
bingo@nameo         | 000000000000000         | 47.4392

我正在使用的当前MySQL命令只是改变了权限:

UPDATE `tronner_times` SET `auth` = '{$ani->e->user->uid}' WHERE `auth` = '{$actual}'

2 个答案:

答案 0 :(得分:1)

这听起来像BEFORE UPDATE触发器的工作。

答案 1 :(得分:0)

我会使用存储过程进行更新。在该过程中,您可以处理检查其他值的逻辑,必要时删除然后更新。