我是这样的一张桌子:
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开始会更好。
有干净的解决方案吗?
答案 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
内部查询获取每个不同用户的唯一ID(从1开始并按字母顺序增加。您可以删除订单,如果您不关心任何订单)并相应地更新您的表。
希望这有帮助。
答案 1 :(得分:0)
ALTER TABLE mytable ADD userID INT;
UPDATE mytable, usertable
SET mytable.userID = usertable.ID
WHERE usertable.user=mytable.user;