我想要UPDATE表格行在member_network表格使用WHERE子句由team_id = 91和使用JOIN.

主表member_network struct 如下:

| id |  network_profile_name |                              
|----------------------------|
|  1 |    John Doe           |

我在另外两个连接表中有两个字段,其中包含我需要的值.

team_member_network struct 如下:

| id | team_member_id | member_network_id |
|----|----------------|-------------------|
|  2 |             1  |                 1 |

team_member:

| id    | team_id | member_id |
| ------|---------|-----------|
| 1     |      91 |   1679817 |   

这是一种反向关系

我到目前为止的工作:

   UPDATE member_network
        SET
            network_profile_name = 'James Bond'
        JOIN team_member_network
            ON member_network.id = team_member_network.member_network_id
        JOIN team_member
            ON team_member_network.team_member_id = team_member.id
        WHERE team_id = 91;
      

出现错误:

语法错误:7错误:"Join\"或"Join\"附近的语法错误

适用于SELECT,但在更新选定行时应如何使用JOIN?我发现的相关帖子对我的情况没有帮助.

推荐答案

我不明白你为什么要加入这个:

UPDATE member_network mn
  SET network_profile_name = 'James Bond'
WHERE EXISTS (SELECT *
              FROM team_member_network tmn
                JOIN team_member tm ON tmn.team_member_id = tm.id
              WHERE mn.id = tmn.member_network_id
                AND tm.team_id = 91);

如果您真的想"联接"这些表,则需要在UPDATE语句的WHERE子句中执行此操作.As documented in the manual您首先需要一个FROM子句,但这应该重复目标表.

UPDATE member_network mn
  SET network_profile_name = 'James Bond'
FROM team_member_network tmn
  JOIN team_member tm ON tmn.team_member_id = tm.id
WHERE mn.id = tmn.member_network_id --<< this is the "join" to the target table
  AND tm.team_id = 91;

Sql相关问答推荐

如何创建具有部分可空列的两个表的联合

数据子集的左连接

SQL更新,在2个额外的表上使用内部连接

如何从上一个值减go 值

在甲骨文中查找前一个星期一的S日期

Oracle SQL-将结果列在单行中

用户购买平台及金额统计

SQL数据库规范化与数据插入

如何简化此PostgreSQL查询以计算平均值?

用于SQL协助的XQUERY()

使用 SQL 将列添加到 Access 数据库时出错

列(值不为空)到其他有序列

根据要过滤的列的值进行联接和分组

基于字符串的SQL查询

在 MS Access VBA 中,如何测量显示查询的时间?

存储过程 - 动态 SQL 中不同列值的计数

并非所有变量都绑定在 PL SQL 函数中

如何使用 pg-promise 创建要在复杂的 sql 查询中使用的 VALUES 列表?

如何在 Oracle 中获取此变量的值?

创建一个将层次 struct 级别放入列中的查询