MySql左加入更新哪里列像

MySql左加入更新哪里列像

问题描述:

有人可以看看这个,并告诉我什么语法问题,我越来越?MySql左加入更新哪里列像

UPDATE `oc_product` p LEFT JOIN 'oc_product_description' d on p.product_id = d.product_id SET p.image = "/catalog/tonerthumb.gif" WHERE d.description like '%toner%' 

在此先感谢。

+1

这岂不是告诉你,当你试图执行命令?对于其中一个,它看起来像是你的连接表使用了错误的引用类型。另外,我对Oracle更加熟悉,但是在做一个即时猜测和字符串比较'p.image'的值时,您使用双引号而不是单引号。 – gmiley

+1

您正在使用单引号作为第二个表名,使其成为一个字符串。 – Kenney

+0

啊就是这样!鬼祟的语录。谢谢你,先生。 –

这看起来像一个家庭作业的问题,但由于我已经主要在我的评论中回答它,所以我会继续前进并将其移到实际答案并添加一些解释。

您的疑问:

UPDATE `oc_product` p 
LEFT JOIN 'oc_product_description' d 
ON p.product_id = d.product_id 
SET p.image = "/catalog/tonerthumb.gif" 
WHERE d.description like '%toner%' 

你的主要问题是,你是在试图界定对象使用单引号。回刻度用于此。单引号用作字符串分隔符。在我上面的评论中,我提到双引号可能对于字符串分隔符不正确,但在查看之后,实际上可以在mysql中使用单引号或双引号,因此您可以忽略该位。你唯一真正的问题是单引号和反引号。

为了能够正确形成查询,你只需要替换您查询的join子句的单引号与后台蜱:

UPDATE `oc_product` p 
LEFT JOIN `oc_product_description` d 
ON p.product_id = d.product_id 
SET p.image = "/catalog/tonerthumb.gif" 
WHERE d.description like '%toner%' 

虽然双引号是罚款起诉对于字符串分隔符,正如我所说,这是更好的写作查询时是一致的,所以我会继续前进,更改查询只带来一定的一致性:

UPDATE `oc_product` p 
LEFT JOIN `oc_product_description` d 
ON p.product_id = d.product_id 
SET p.image = '/catalog/tonerthumb.gif' 
WHERE d.description like '%toner%'; 

我也进入收尾所有的习惯您的查询显式使用分号。

在MySQL正确的语法如下:

UPDATE `oc_product` p 
LEFT JOIN `oc_product_description` d 
ON p.product_id = d.product_id 
SET p.image = '/catalog/tonerthumb.gif' 
WHERE d.description like '%toner%';