从另一个单独的表行更新一个表行[重复]

Posted

技术标签:

【中文标题】从另一个单独的表行更新一个表行[重复]【英文标题】:Updating one table row from another separate table row [duplicate] 【发布时间】:2014-03-18 01:48:53 【问题描述】:

我正在将名为 allCooks 的表中的 2 行移动到名为 recipeChallenge 的表中的一行(cookAAA 在比萨挑战赛中对抗 cookBBB) 每个匹配都已经有一个 ID,这是我要更新的行

我进行了两次更新,一次是为cookAAA,然后是为cookBBB 用厨师 A 更新 matchID...(我已经将 php 变量留在了)

"UPDATE `recipeChallenge` AS v1, 
        `allCooks` AS v2 
    SET v1.`cookAAAID` = v2.`cookID`, 
        v1.`cookAAAName` = v2.`cookName` 
  WHERE     v1.`matchID`='" .$matchID."' 
        AND v2.`cookID`= '" .$cookAID."'";

然后是厨师B

"UPDATE `recipeChallenge` AS v1, 
        `allCooks` AS v2 
    SET v1.`cookBBBID` = v2.`cookID`, 
        v1.`cookBBBName` = v2.`cookName` 
  WHERE     v1.`matchID`='" .$matchID."' 
        AND v2.`cookID`= '" .$cookBID."'";

recipeChallenge 正在更新,但第二次更新还创建了一个新的 matchIDrecipeChallenge 表中的行。为什么?

【问题讨论】:

提供您的表结构。我有一种感觉,这就是“你的全部方法” @Alex,WholeWhole db 结构可能有问题,但可以说我想这样做,解决这个问题的整个方法错了吗? @Alex,@Prix,干杯,我看起来我必须了解什么是 JOIN。 @Prix,你的问题使用了 1 个匹配变量,我的有两个单独的变量需要在 mysql 中单独验证 @Gamemorize 是这样吗?就用2吧,看不出有什么难的,你不是说你会去学习/阅读关于JOIN的吗? 【参考方案1】:

你可以这样做:

"UPDATE `recipeChallenge` AS v1, 
    `allCooks` AS v2 , 
    `allCooks` AS v3 
SET v1.`cookAAAID` = v2.`cookID`, 
    v1.`cookAAAName` = v2.`cookName`,
    v1.`cookBBBID` = v3.`cookID`, 
    v1.`cookBBBName` = v3.`cookName`
WHERE     v1.`matchID`='" .$matchID."' 
    AND v2.`cookID`= '" .$cookAID."'
    AND v3.`cookID`= '" .$cookBID."'";

【讨论】:

谢谢!您确认我的 mysql 很好(现在更好)!

以上是关于从另一个单独的表行更新一个表行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

更新脚本以针对具有递增 ID 的新创建的表行运行

sql server中的表行到列

SQL - 根据另一个表内容更新表行[重复]

更新已检查的表行

使用css替换具有不一致类的表行颜色的方法[重复]

使用 JOOQ 更新 SQLITE 中的表行失败