【问题标题】:Updating a column value from the value of the other table SQL从另一个表 SQL 的值更新列值
【发布时间】:2021-10-28 08:56:43
【问题描述】:

我有一个表 chatmessages,它有一个 chatId、incomingId、goingId 列,我还有另一个表 chatmembers,它有一个 chatId、usersId 列。还有另一个表chat,它只包含chatId,以及聊天的usersId 初始化程序,即user1

现在,我想将chatId从chatmembers复制到chatmessages,其中有相同的用户,例如incomingId 83和outingId 81在chatmembers中具有相同的chatId

我有这个查询,但它不起作用

UPDATE chatmessages SET chatId = 
(SELECT c.chatId FROM chat AS c INNER JOIN (SELECT chatId FROM chatmembers WHERE usersId = incomingId) AS uc ON c.chatId = uc.chatId 
INNER JOIN (SELECT chatId FROM chatmembers WHERE companyId = outgoingId) AS cc ON uc.chatId = cc.chatId)

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: php html mysql sql phpmyadmin


【解决方案1】:

你必须把这个查询写在数组中,然后执行, 也可以在

中使用双引号
(SELECT c.chatId FROM chat AS c 
INNER JOIN (SELECT chatId FROM chatmembers WHERE usersId = incomingId) AS uc ON c.chatId = uc.chatId 
INNER JOIN (SELECT chatId FROM chatmembers WHERE companyId = outgoingId)

喜欢这个

("SELECT c.chatId FROM chat AS c 
INNER JOIN (SELECT chatId FROM chatmembers WHERE usersId = incomingId) AS uc ON c.chatId = uc.chatId 
INNER JOIN (SELECT chatId FROM chatmembers WHERE companyId = outgoingId") 

【讨论】:

  • 抱歉,这不是我的问题。谢谢
【解决方案2】:

如果我理解正确,您可以使用joins。以下使用 MySQL 语法:

update chatmessages cm join
       chatusers cuo
       on cuo.userid = cm.outgoingid join
       chatusers cui
       on cui.userid = cm.incomingid and
          cui.chatid = cuo.chatid
   set cm.chatid = cuo.chatid;

【讨论】:

  • 谢谢,嗯,我可以知道我之前的代码有什么问题吗?它也应该工作还是我应该在更新时使用 JOIN?
  • @DanncarloReformado 。 . .我不知道你的代码有什么问题。我觉得很难读。
  • 您的回答有效,我只是想知道我之前的 UPDATE 查询是否有问题,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
相关资源
最近更新 更多