【问题标题】:SQL syntax error : 'FROM table_A INNER JOIN table_B ON table_A.name = table_B.name' at line 1 [duplicate]SQL 语法错误:第 1 行的“FROM table_A INNER JOIN table_B ON table_A.name = table_B.name”[重复]
【发布时间】:2017-08-01 06:57:45
【问题描述】:

我有一个错误提示“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 'FROM table_A INNER JOIN table_B ON table_A.name = table_B 附近使用的正确语法.name' 在第 1 行“

sql查询是:

$sql="UPDATE table_A SET table_A.quantity = table_A.quantity -  
table_B.quantity FROM table_A INNER JOIN table_B ON table_A.name = table_B.name 
WHERE table_B.status = 'APPROVED'";

请帮我解决这个错误。谢谢你。

【问题讨论】:

  • INNER 应该是内连接?
  • 你写的是INNER而不是INNER JOIN
  • 抱歉。这是一个错字。我正在使用 INNER JOIN
  • 你不能像MySQL那样做UPDATE - 请参阅这个问题以了解正确的语法:stackoverflow.com/questions/1262786/…
  • 等等,什么...我认为 MySql 不合法

标签: mysql sql


【解决方案1】:

“INNER”应该是“INNER JOIN”

我认为您还必须从“SET数量”中取出“table_A”

 $sql="UPDATE table_A SET quantity = table_A.quantity -  
    table_B.quantity FROM table_A INNER JOIN table_B ON table_A.name = table_B.name 
    WHERE table_B.status = 'APPROVED'";

【讨论】:

  • 但是,我得到了这个:警告:mysql_num_rows() 期望参数 1 是资源,布尔值在 $count=mysql_num_rows($sql); 行中给出;
【解决方案2】:

你有语法错误。

UPDATEINNER JOIN 的正确语法:

UPDATE T1,T2
[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1
SET T1.C2 = T2.C2, 
    T2.C3 = expr
WHERE condition

查询:

$sql="UPDATE table_A 
INNER JOIN table_B ON table_A.name = table_B.name 
SET table_A.quantity = table_A.quantity - table_B.quantity
WHERE table_B.status = 'APPROVED'";

【讨论】:

  • 但是,我得到了这个:警告:mysql_num_rows() 期望参数 1 是资源,布尔值在 $count=mysql_num_rows($sql); 行中给出;
  • 你必须使用mysql_affected_rows()。
猜你喜欢
  • 1970-01-01
  • 2019-11-09
  • 2018-05-04
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
  • 2020-11-19
  • 1970-01-01
相关资源
最近更新 更多