0

我有两张桌子,company_info并且comp_orders

我运行以下查询:

$sql = "Update s1 SET s1.Comp_Addr = s2.Comp_Addr 
        Where s1.Comp_Name=s2.Comp_Name AND 
        s1.ID_No='$id' FROM comp_orders s1 , company_info s2";

但它不起作用。返回的错误是

“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'FROM comp_orders s1 ,company_info s2' 附近使用正确的语法”

4

8 回答 8

1

你应该JOIN像这样的两个表:

Update comp_orders s1
INNER JOIN  company_info s2 ON s1.Comp_Name=s2.Comp_Name 
SET s1.Comp_Addr = s2.Comp_Addr 
[Where ...] --optional perediate
于 2012-09-26T11:42:14.487 回答
1
UPDATE comp_orders s1
INNER JOIN company_info s2 on s1.Comp_Name=s2.Comp_Name
SET s1.Comp_Addr = s2.Comp_Addr 
WHERE s1.ID_No = '$id' 

简化的 SQL 小提琴示例

于 2012-09-26T11:42:57.327 回答
1

你不能FROM在里面使用update

查询应该是

$sql = "Update s1 SET s1.Comp_Addr = s2.Comp_Addr Where s1.Comp_Name=s2.Comp_Name AND s1.ID_No='$id'";
于 2012-09-26T11:42:59.813 回答
0

尝试

UPDATE comp_orders s1
INNER JOIN company_info s2 USING(`Comp_Name`)
SET s1.Comp_Addr = s2.Comp_Addr 
WHERE s1.ID_No = '$id'

或者

UPDATE comp_orders s1 company_info s2 
SET s1.Comp_Addr = s2.Comp_Addr 
WHERE s1.ID_No='$id'

参考

于 2012-09-26T11:46:14.403 回答
0

UPDATE … FROM? 这是哪种 SQL 方言?我以前从未见过它。

FROMMySQL子句中没有:http UPDATE: //dev.mysql.com/doc/refman/5.0/en/update.html

于 2012-09-26T11:43:07.167 回答
0

如果您尝试以下操作会怎样:

UPDATE comp_orders s1, company_info s2
SET s1.Comp_Addr = s2.Comp_Addr 
WHERE s1.Comp_Name = s2.Comp_Name 
AND s1.ID_No='$id'
于 2012-09-26T11:46:05.263 回答
0

您似乎更新查询错误。我认为以下应该有效:

$sql = "
    Update comp_orders s1, company_info s2 SET 
        s1.Comp_Addr = s2.Comp_Addr 
        Where s1.Comp_Name=s2.Comp_Name AND s1.ID_No='$id'";
于 2012-09-26T11:42:35.730 回答
0
$sql = "Update s1 SET s1.Comp_Addr = s2.Comp_Addr Where s1.Comp_Name=s2.Comp_Name AND s1.ID_No='$id' FROM comp_orders.s1 , company_info.s2"; 

试试这个,你错过了点..

还有其他错误 - 查找更新

于 2012-09-26T11:42:52.483 回答