【问题标题】:Updating two tables with an inner join使用内部联接更新两个表
【发布时间】:2017-01-15 03:48:27
【问题描述】:

我有两张表,一张是question,另一张是answer

问题表的字段为

question_id, question, type, answer_id. 

答案表的字段为

answer_id, question_id, comment, rating, doctor_id

现在我要更新的答案属于医生id所在的问题。为此,我尝试编写此查询:

update question q 
set q.question = 'dmvvnnv',a.comment = 'covonfvk',a.rating = 5 
INNER JOIN answer a on q.answer_id = a.answer_id 
WHERE a.doctor_id = 8

但它给了我语法错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 在 'INNER JOIN 附近回答 q.answer_id = a.answer_id WHERE a.doctor_id = 8' 在第 1 行

【问题讨论】:

标签: mysql join sql-update


【解决方案1】:

对于 MySQL UPDATEJOIN 语法不同,SET 部分应该在 JOIN 之后

使用以下查询更新条目:

UPDATE question q
INNER JOIN answer a ON a.answer_id = q.answer_id
SET q.question = 'dmvvnnv'
    ,a.comment = 'covonfvk'
    ,a.rating = 5
WHERE a.doctor_id = 8

【讨论】:

【解决方案2】:

使用以下内容:

UPDATE question q INNER JOIN answer a on q.answer_id = a.answer_id 
SET q.question = 'dmvvnnv',a.comment = 'covonfvk',a.rating = 5
WHERE a.doctor_id = 8 

【讨论】:

  • 给出错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行 @AT-2016 的“FROM question q INNER JOIN answer a on q.answer_id = a.answer_id WHERE a.doctor”附近使用正确的语法
  • 至此,所有问题都将更新为医生 ID 8。我们如何更新单个问题? @AT-2016
  • 问题表中有唯一的id。只需使用它来更新单行,例如 ques_id - 1、2、3、4 等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多