MySQL 根据多表更新一列

标签 mysql

我有一个关于更新 MySQL 数据库的问题。

我有三个表:Match、Submission 和 SubmissionVersion。 SubmissionVersion 可以设置为“Favorite”。但我不能只查询 UPDATE SubmissionVersion SET IsFavorite = 1 WHERE ID = $ID 因为与提交的关系而不是匹配。我的问题是如何使用具有两个连接的 MySQL 查询更新 SubmissionVersion 列?我试过这个查询,但我无法让它工作。

UPDATE
    SubmissionVersion
JOIN
    Submission
ON
    Submission.ID, SubmissionVersion.SubmissionID
JOIN
    Match
ON
    Match.ID ON Submission.MatchID
SET
    SubmissionVersion.IsFavorite    = ".$Index."
WHERE
    SubmissionVersion.ID        = ".$ID."
AND
    Match.ID            = ".$MatchID

最佳答案

UPDATE SubmissionVersion sv
SET    sv.IsFavorite = ".$Index."
WHERE  sv.ID = ".$ID."
AND    sv.ID IN (
       SELECT s.ID
       FROM   Submission s
       WHERE  s.MatchID  = ".$MatchID'")

如果我正确理解您的陈述,那应该可行。

我完全删除了 Match 表,因为您只是根据 Submission 中的一列检查值。

关于MySQL 根据多表更新一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3700236/

相关文章:

MySQL 错误 1215 : Cannot add foreign key constraint

mysql - 加入两个 mysql 查询并包含计数为零的列值

java - 慢速 hibernate 刷新

php - 无法插入 : A foreign key constraint fails

mysql - 在单个 UPDATE 请求中更新多条记录

MySQL 限制 MySQL 字段的值(允许一个特定值和多个其他值。)?

php - E/ Volley : [1376] BasicNetwork. 执行请求 : Unexpected response code 404 for http://192. 168.0.109/connectphp/GetRestaurantData.php?restype=cafe

mysql - Laravel 迁移偏头痛

php - 如何获取选中的checkbox对应的值

mysql - MySQL 中的计数查询