Mysql (My)SQL-基于表B填充表A中的值
我很抱歉-我意识到这是一个非常常见的问题,但我很难理解我需要使用的查询Mysql (My)SQL-基于表B填充表A中的值,mysql,sql,Mysql,Sql,我很抱歉-我意识到这是一个非常常见的问题,但我很难理解我需要使用的查询 我实际上是在查询第二个表的基础上,尝试将值从一个表复制到另一个表 例如,我有两个表: +-----------------------------------------------------+ | Table 1 | +----------+------+----------+------------+-----------+ |
我实际上是在查询第二个表的基础上,尝试将值从一个表复制到另一个表 例如,我有两个表:
+-----------------------------------------------------+
| Table 1 |
+----------+------+----------+------------+-----------+
| UniqueID | name | location | Flavour | Status |
| 723948 | | | Mango | Tried |
| 723948 | | | Orange | Not tried |
| 723948 | | | Strawberry | Tried |
| 2346 | | | Mango | Not tried |
| 2346 | | | Strawberry | Tried |
| 3745 | | | Strawberry | Tried |
| 3745 | | | Mango | Tried |
+----------+------+----------+------------+-----------+
及
然后,我希望根据与表2匹配的UniqueID填充表1中的name和location列,因此结果如下:
+--------------------------------------------------------------------------------+
| Desired result (Table 1) |
+--------------------------+-----------------+----------+------------+-----------+
| UniqueID | name | location | Flavour | Status |
| 723948 | Steve Stevenson | London | Mango | Tried |
| 723948 | Steve Stevenson | London | Orange | Not tried |
| 723948 | Steve Stevenson | London | Strawberry | Tried |
| 2346 | Mary Marington | New York | Mango | Not tried |
| 2346 | Mary Marington | New York | Strawberry | Tried |
| 3745 | | | Strawberry | Tried |
| 3745 | | | Mango | Tried |
+--------------------------+-----------------+----------+------------+-----------+
我知道我应该在UPDATE、SET和FROM-then-JOIN这几行中使用一些东西,但我不能100%确定正确和最准确/高效的查询是什么
谢谢 您正在寻找一个
UPDATE
语句,其中包含一个非常传统的内部连接,使用
基本格式为:
UPDATE
T1
JOIN T2 ON T1.col = T2.col
JOIN T3 ON T2.other = T3.other
...
SET
T1.updatedcol = T2.colvalue,
T1.updatedcol2 = T2.colvalue2,
就你而言:
UPDATE
Table1
INNER JOIN Table2 ON Table1.UniqueID = Table2.UniqueID
SET
-- Set values in Table1 from joined rows in Table2
Table1.name = Table2.fullname,
Table1.location = Table2.baselocation
只修改匹配的行,这就是为什么您可以使用内部联接
而不需要左联接
(,尽管SQLFIDLE目前无法运行表1中的SELECT*)尝试使用以下查询
UPDATE `table 1` AS t1
INNER JOIN `table 2` AS t2
ON t1.UniqueID = t2.UniqueID
SET
name = fullname,
location=baselocation
可能的复制品你会扔掉原来的桌子吗?如果没有,那么您可能应该在选择时间执行加入
。
UPDATE `table 1` AS t1
INNER JOIN `table 2` AS t2
ON t1.UniqueID = t2.UniqueID
SET
name = fullname,
location=baselocation