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%'
在此先感谢。
答
这看起来像一个家庭作业的问题,但由于我已经主要在我的评论中回答它,所以我会继续前进并将其移到实际答案并添加一些解释。
您的疑问:
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%';
这岂不是告诉你,当你试图执行命令?对于其中一个,它看起来像是你的连接表使用了错误的引用类型。另外,我对Oracle更加熟悉,但是在做一个即时猜测和字符串比较'p.image'的值时,您使用双引号而不是单引号。 – gmiley
您正在使用单引号作为第二个表名,使其成为一个字符串。 – Kenney
啊就是这样!鬼祟的语录。谢谢你,先生。 –