MySql Left Join update Where列Like

时间:2016-02-29 19:20:44

标签: mysql database

有人可以看看这个并告诉我我会遇到什么语法问题吗?

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%'

提前致谢。

2 个答案:

答案 0 :(得分: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子句中使用back-ticks替换单引号:

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%';

我也习惯用分号明确地结束所有查询。

答案 1 :(得分:0)

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%';