首页 > 解决方案 > 我在选择这个更新时做错了什么

问题描述

我一直在尝试通过选择控制台进行更新,控制台不断显示错误消息

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的“from (Select a.id_activity as stat, a.date_reg as l_clock”附近使用正确的语法

我将不胜感激。

update user_stat set
   clock_stat = a.stat
 , datetime_lclock = a.l_clock
 , date_fclock = a.f_clock
from
 (
Select
  a.id_activity as stat
  , a.date_reg as l_clock
  , date(c.date_reg) as f_clock
from log_activity a
  inner join
    (
      select
        max(id_reg) as last_Act,
        min(id_reg) as first_Act
      from log_activity
        where uid = 1
    )b on a.id_reg = b.last_Act
  left join log_activity c on c.id_reg = b.first_Act
)a
where uid = 1;

标签: mysql

解决方案


您需要稍后设置值,因此一般语法类似于:

   UPDATE TABLEA a 
   JOIN TABLEB b ON a.join_colA = b.join_colB  
   SET a.columnToUpdate = [something]

update user_stat 
join
(
  Select
  a.id_activity as stat
  , a.date_reg as l_clock
  , date(c.date_reg) as f_clock
  from log_activity 
 ) a
  inner join
  (     select
        max(id_reg) as last_Act,
        min(id_reg) as first_Act
       from log_activity where uid = 1
    )b on a.id_reg = b.last_Act
  left join log_activity c on c.id_reg = b.first_Act
set
   clock_stat = a.stat
 , datetime_lclock = a.l_clock
 , date_fclock = a.f_clock

推荐阅读