使用update和select语句更新mysql表中的列

使用update和select语句更新mysql表中的列,mysql,phpmyadmin,Mysql,Phpmyadmin,我试图用以下代码更新mysql(xamp)中的一列- UPDATE firm SET `fk_contact_details_id` = SELECT 'id' FROM contact_details WHERE contact_details.name = firm.name 但我得到了以下错误: *#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL

我试图用以下代码更新mysql(xamp)中的一列-

UPDATE firm SET `fk_contact_details_id` = SELECT 'id' FROM contact_details WHERE contact_details.name = firm.name
但我得到了以下错误:

*#1064 - You have an error in your SQL syntax; check the manual that corresponds to your   
MySQL server version for the right syntax to use near 'SELECT 'id' FROM contact_details WHERE   
contact_details.name = firm.name' at line 1*
有人能告诉我我的陈述有什么错误吗?

而不是:

选择“id”

使用

选择id

完整查询:

UPDATE firm 
    SET `fk_contact_details_id` = (
        SELECT 
            id 
        FROM 
            contact_details 
        WHERE 
            contact_details.name = firm.name
        LIMIT 1
    )

此查询似乎正常工作,但我遇到了以下错误:#1242-子查询返回的行数超过1行这意味着您在
contact_details
中有更多行使用该名称。。。简单的解决方案是在select中添加
limit1
,但这并不能解决数据库设计中可能出现的问题。为什么有多家公司有相同的名称和不同的ID?对吗?也许Alwina应该考虑在字段“name”上创建唯一键约束…@cathulhu这是一个很好的观点,我只是提供了他的问题的答案,而不是他的数据完整性的答案。谢谢你的快速回复。在“修复”我的桌子并运行Stephan的查询之后,它像炸弹一样工作。