动态插入另一个表中的字段值

时间:2014-05-06 05:26:07

标签: mysql

这是关于mysql的新手问题,我在同一个数据库中有以下两个表

       Users                                    vehicles

User   Level   Group                Vehicle    User    GroupID
 A       0       AG                   x         A         x
 a1      1       AG                   y         a2        x  
 a2      1       AG                   z         a1        x
 B       0       BG                   
 b1      1       BG
 b2      1       BG 

具有Level = 0的User.user是超级用户(每个组只有一个超级用户)。

在车辆中用户是在Users.user上的Fk,现在需要创建新列GroupID。在这里我遇到了问题,我需要将 GroupID 值设置为Users.User的超级用户的User.User。

最后,车辆表应该看起来像

  Vehicle    User    GroupID
    x         A         A
    y         a2        A  
    z         a1        A

对整个Vehicle表格执行此操作的任何示例查询对我都有帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

您需要使用用户定义的变量来根据相关组填充您的车辆表

UPDATE `vehicles` v
JOIN (
SELECT 
`User` ,
@g:=`Level`,
@u:= CASE WHEN @g= 0 THEN `User` ELSE @u END `new_group`
FROM users 
JOIN(SELECT @g:=-1 ,@u:='') t
ORDER BY `User` ,`Level`
) n
ON(n.`User` = v.`User`)
SET v.GroupID = n.new_group

答案 1 :(得分:0)

    UPDATE
        user.vehicles
    SET
        user.vehicles.GroupID = user.user.User
    FROM
        user.vehicles
    INNER JOIN
        (SELECT User FROM user.user WHERE Level = 0) user.user

     ON
    user.user.User = user.vehicles.User

UPDATE
    user.vehicles
SET
    user.vehicles.GroupID = (SELECT User FROM (SELECT User FROM user.user WHERE Level = 0))

尝试以上查询我希望帮助你........ !!

答案 2 :(得分:0)

您可以为新列更新此表格。

UPDATE
    vehicles v
SET
    v.GroupID = (SELECT User FROM Users WHERE Level = 0 AND Group IN (SELECT Group FROM Users WHERE User = v.User));