【问题标题】:SQL Syntax error on JOINJOIN 上的 SQL 语法错误
【发布时间】:2016-04-10 14:42:18
【问题描述】:

我的桌子:

        USERS_1:                             USERS_2:
   +------------+---------+        +------------+---------+
   |    id      |username |        |  username  |claimedBy| 
   +------------+---------+        +------------+---------+
   |     4      | pitiqu  |        | myUsername |  NULL   |<- this should become 4
   +------------+---------+        +------------+---------+

MY SQL:(字面意思是 MySQL)

UPDATE UL
SET UL.claimedBy = US.username
FROM USERS_1 as UL
INNER JOIN USERS_2 as US
ON US.id = 4
where UL.username="myUsername"

很明显,我想将表 2 的 claim_by(对于用户名“myUsername”)设置为表 1 中 id = 4 处的用户名“pitiqu”。

如果所有“用户名”都令人困惑,我很抱歉。希望表格和 SQL 能解决我的问题。

弹出的错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“FROM USERS_1 as UL INNER JOIN USERS_2 as US ON US.id = 4 where UL”附近使用正确的语法

为什么会这样……有人吗?

EDIT:请原谅我的语法不正确。我一直在尝试使用 THIS 示例,在编辑它时我删除了 SET。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您可以像这样使用更新查询:

    update
      USERS_2
    set
      claimedBy = (SELECT username FROM USERS_1 WHERE id=4)
    where
      username="myUsername"
    

    如果你想要一个连接,正确的语法是这样的,但是在这个特定的上下文中它没有多大意义,我建议你使用第一个查询:

    UPDATE
      USERS_1 as UL INNER JOIN USERS_2 as US ON US.id = 4
    SET
      UL.claimedBy = US.username
    WHERE
      UL.username="myUsername"
    

    【讨论】:

    • 这就是我一直在寻找的。我知道的第一个示例,但我的目的是现在使用 JOIN 关键字,所以我将坚持第二个示例。谢谢。
    【解决方案2】:

    这是错误的语法。您应该使用更新联接,例如

    UPDATE UL u
    JOIN USERS_2 US ON US.id = 4
    SET u.claimedBy = US.username
    where u.username='myUsername';
    

    【讨论】:

      【解决方案3】:

      您在 UPDATE 查询中使用 FROM。这是完全错误的。

      重写它的一种方法如下,使用子查询:

      UPDATE USERS_2 set claimedBy = (SELECT id from USERS_1 where username = "pitiqu")
      where username="myUsername";
      

      【讨论】:

      • 哦,这很尴尬,但仍然......我将使用适当的 SET 对其进行编辑,但它仍然无法正常工作。这是我刚刚从互联网上“展示”我的问题的东西。
      猜你喜欢
      • 1970-01-01
      • 2013-06-07
      • 2018-05-04
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      相关资源
      最近更新 更多