几年未做任何编程,因此又有点使用rust 。

我有两个表users表和users_profiles表。我想在两个表(users_profilesuser_uid)都匹配users.user_uidusers_profiles.user_uidusers.user_login = 'johndoe'都匹配的条件下更新users.user_uid = '11'表。

它将在一个php脚本中执行,因此johndoe实际上是用户的用户名(无论存储在 session 中的用户名如何,users_uid都相同。为简单起见,我添加了伪数据。

我在phpmyadmin中运行查询,并在INNER JOIN附近得到语法错误。我只是无法弄清楚我在做什么错(可能完全写错了),花了几个小时试图解决,但没有成功。

这是我的SQL查询。

    UPDATE
      users_profiles
    SET
      users_profiles.user_fname = 'John',
      users_profiles.user_lname = 'Doe',
      users_profiles.user_gender = 'male'
    INNER JOIN
      users
    ON
      users.user_uid = users_profiles.user_uid
    WHERE
      users.user_login = 'johndoe'
    AND
      users.user_uid = '11'

通过phpmyadmin运行sql查询时出现错误。
#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'ON users.user_uid, .user_uid FROM users_profiles WHERE
users.user_login ' at line 7

谢谢。

最佳答案

尝试如图所示交换SETINNER JOIN,例如this SO answer(如果有帮助,请引用):

UPDATE
      users_profiles p
    INNER JOIN
      users u
    ON
      u.user_uid = p.user_uid
    SET
      p.user_fname = 'John',
      p.user_lname = 'Doe',
      p.user_gender = 'male'
    WHERE
      u.user_login = 'johndoe'
    AND
      u.user_uid = 11

10-05 23:07