簡體   English   中英

來自其他表的MySQL更新表

[英]MySQL update table from other table

我有兩張桌子:聯系人和公司。

contacts has : id, group_id, company_id, email, company
companies has: id, group_id, name

目前,contacts.group_id值為0(最近添加了列),所以contacts.company值為“”。

我該如何移動數據

companies.group_id to contacts.group_id and companies.name to contacts.company 
based on contacts.company_id = companies.id?

我嘗試了以下查詢,但給了我錯誤

UPDATE contacts SET contacts.group_id=companies.group_id 
FROM companies WHERE contacts.company_id=companies.id;

它給了我這個錯誤

#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 'FROM companies WHERE 
contacts.company_id=companies.id' at line 1

我使用phpmyadmin來運行此查詢

Mysql允許你在UPDATE語句中執行JOINS:

UPDATE contacts c
INNER JOIN companies co ON c.company_id = co.id 
SET c.group_id = co.group_id,
    c.company = companies.name

來自文檔

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

您還可以執行覆蓋多個表的UPDATE操作。 但是,您不能將ORDER BY或LIMIT與多表UPDATE一起使用。 table_references子句列出了連接中涉及的表。

我認為這對你有用:

update
  contacts,
  companies
set
  contacts.group_id=companies.group_id, 
  contacts.company=companies.name
where
  contacts.company_id = companies.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM