在SQL中的表中添加特定字段

时间:2013-11-28 16:23:30

标签: mysql sql

我是这样的一张桌子:

date time user data
131111 111111 Mike 23
131111 121212 Linda 12
131111 131323 Mike 45

我想根据数据库中的现有数据添加一个名为“userID”的字段:

date time user userID data
131111 111111 Mike 1 23
131111 121212 Linda 2 12
131111 131323 Mike 1 45

只要userID是与现有用户的一对一映射,就可以了。 如果它从1到#ofUsers开始会更好。

有干净的解决方案吗?

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

首先添加新列:

ALTER TABLE tab1 ADD userid INT NOT NULL;

然后你做:

UPDATE tab1 t1
INNER JOIN (  
SELECT a.user, @rownum := @rownum + 1 AS newID
  FROM (
    SELECT DISTINCT user
    FROM tab1
    ORDER BY user
    ) a
  JOIN (
    SELECT @rownum := 0
    ) r
) t2 ON t1.user = t2.user
SET t1.userid = t2.newID

sqlfiddle demo

内部查询获取每个不同用户的唯一ID(从1开始并按字母顺序增加。您可以删除订单,如果您不关心任何订单)并相应地更新您的表。

希望这有帮助。

答案 1 :(得分:0)

ALTER TABLE mytable ADD userID INT;

UPDATE mytable, usertable 
SET mytable.userID = usertable.ID 
WHERE usertable.user=mytable.user;