Mysql 使用左联接更新查询不起作用

Mysql 使用左联接更新查询不起作用,mysql,Mysql,嗨,我试过不同的方法让它工作,显然我做错了什么。可能是个小东西 因此,我试图从左连接选项卡更新一个值,这是一个选择查询开关,工作正常。但是现在我想更新这个值 SELECT categories.categories_id, cd.categories_name as cat_name, p2c.products_id as p2c_id, p2c.categories_id , p.products_id as p_id, pa.products_id as pa_id, pa.c_

嗨,我试过不同的方法让它工作,显然我做错了什么。可能是个小东西

因此,我试图从左连接选项卡更新一个值,这是一个选择查询开关,工作正常。但是现在我想更新这个值

SELECT 
categories.categories_id,
cd.categories_name as cat_name, 
p2c.products_id as p2c_id, 
p2c.categories_id , 
p.products_id as p_id, 
pa.products_id as pa_id, 
pa.c_content_id as pa_c_content_id, 
pa.*,
c.group_id, c.content

FROM categories
left join (categories_description as cd) on(categories.categories_id = cd.categories_id)
left join (products_2_categories as p2c) on(categories.categories_id = p2c.categories_id)
left join (products as p) on (p2c.products_id = p.products_id)
left join (products_attributes as pa) on (p.products_id = pa.products_id and pa.attribute_items_id = 7)
left join (content as c) on(pa.c_content_id = c.group_id)

WHERE p2c.products_id IS NOT NULL AND pa.products_id IS NOT NULL AND (categories.categories_id = 42 OR categories.parent_id in(42)) ORDER BY cd.categories_name ASC , p2c.products_id ASC; 
这是我正在尝试执行的更新查询

UPDATE content 
FROM categories AS ca
LEFT JOIN(categories_description AS cd) ON(ca.categories_id =    cd.categories_id)
LEFT JOIN(products_2_categories AS p2c) ON(ca.categories_id = p2c.categories_id)
LEFT JOIN(products AS p) ON(p2c.products_id = p.products_id)
LEFT JOIN(products_attributes AS pa) ON(p.products_id = pa.products_id AND pa.attribute_items_id = 7)
LEFT JOIN(content AS c) ON(pa.c_content_id = c.group_id)

SET content.content = ''

WHERE p2c.products_id IS NOT NULL 
AND pa.products_id IS NOT NULL 
AND (ca.categories_id = 42 OR ca.parent_id in(42)) 
ORDER BY cd.categories_name ASC , p2c.products_id ASC; 

有人能帮我一点忙吗?我不明白我做错了什么。

好吧,首先观察一下update的语法并没有什么坏处:

UPDATE categories AS ca
LEFT JOIN(categories_description AS cd) ON(ca.categories_id =    cd.categories_id)
LEFT JOIN(products_2_categories AS p2c) ON(ca.categories_id = p2c.categories_id)
LEFT JOIN(products AS p) ON(p2c.products_id = p.products_id)
LEFT JOIN(products_attributes AS pa) ON(p.products_id = pa.products_id AND pa.attribute_items_id = 7)
LEFT JOIN(content AS c) ON(pa.c_content_id = c.group_id)

SET content.content = ''

WHERE p2c.products_id IS NOT NULL 
AND pa.products_id IS NOT NULL 
AND (ca.categories_id = 42 OR ca.parent_id in(42)); 

更详细地查看查询:将联接设置为左联接没有意义,因为您要更新的表位于右侧,所以要更新它,它应该存在。所以我会使用内部联接而不是左联接。categories\u description表似乎不会影响内容是否应该更新,因此应该将其从SQL语句中删除。

您遇到了什么错误?更新中的order by在这种情况下似乎没有意义。预期结果是什么,您得到的结果是什么?语法错误,这就是她在更新查询中得到的结果。绝对正确,各位,我经常从我的选择查询开始,然后通过删除我不需要的部分来清理它们。显然,我在这里没有这样做。也许我应该从这个开始@Shadow,我看到你使用的是更新类别而不是内容,这是一个打字错误吗?我得到的错误是一个基本错误,它并没有真正说明问题所在。我还使用HeidiSQL作为工具来执行我的查询。不,这不是一个打字错误。这是mysql的多表更新语法。内容表位于联接的末尾