mysql

时间:2017-01-03 18:32:16

标签: mysql database mariadb

我正在尝试为名为 product_category_parent 的表更新字段(例如 parent_id )。

以下是我尝试使用的查询:

update sub_category_child set name='Mobile Phones', parent_id = (select parent_id from product_category_parent where cname = 'Appliances')

但它返回以下错误

  

#1064 - 您的SQL语法出错;查看与您的MariaDB服务器版本对应的手册,以获得在')附近使用的正确语法。在第1行

这是数据库架构

table product_category_parent
id              cname
-----          ----------
1              Electronics

table sub_category_child
id         name        parent_id
-----      --------    -------------
1          Mobile Phone   1

parent_id作为product_category_parent.id的外键

1 个答案:

答案 0 :(得分:0)

首先,您可能希望父表中的id,而不是父表中的parent_id,对吗?

UPDATE sub_category_child 
SET name = 'Mobile Phones', 
parent_id = (SELECT id FROM product_category_parent WHERE cname = 'Appliances')

其次,使用此查询,您将更新sub_category_child表中的所有记录。这是你想要的,还是你错过了WHERE条款?

第三,如果子查询返回的记录超过1条,则表示存在问题。 您想要选择使用哪一个进行更新(例如ORDER by xx LIMIT 1),或者更有可能 - 出现问题。 我假设sub_category_child中的每一行应该只有一个父级,那么找到Mobile Phones类别的父级的真实条件是什么?