Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql (My)SQL-基于表B填充表A中的值_Mysql_Sql - Fatal编程技术网

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