0

我有两个结构相同的表。Table1保存经过审核的数据,table2保存其余数据。

表格1

+--------+--------+---------------+--------+-------- ---+
| “身份证” | “名字” | “说明” | “类型” | “国家” |
+--------+--------+---------------+--------+-------- ---+
| "1" | “一个” | "x" | "1" | “美国” |
| "2" | "b" | "x" | "1" | “英国” |
+--------+--------+---------------+--------+-------- ---+

表 2

+-----+------------+-----------------+--------+--- --------+----------+
| “身份证” | “名字” | “说明” | “类型” | “国家” | “状态” |
+-----+------------+-----------------+--------+--- --------+----------+
| "1" | “标题1” | “说明1” | "1" | “美国” | "0" |
| "2" | “标题2” | 《说明2》 | “10” | “英国” | "0" |
+-----+------------+-----------------+--------+--- --------+----------+

我运行下面的 sql 以table 1使用来自 的数据进行更新table 2,它运行良好。唯一的问题是,我需要id在两个地方都指定。如果我只在一个地方指定它,它会去哪里?

UPDATE table1 dest, 
       (SELECT name, 
               description 
        FROM   table2 
        WHERE  id = 1) src 
SET    dest.name = src.name, 
       dest.description = src.description 
WHERE  dest.id = 1; 

这件事的发展方式是:

UPDATE table1 SET name AND description =
(
   SELECT name, description from table2
   WHERE id=1 AND country=us and type=10
) WHERE id=idfromselect AND country=countryfromselect AND type=typefromselect

我不知道在哪里放idand remaining conditions。你能帮我吗?

4

2 回答 2

1

将其作为连接进行,将 id 放在连接条件中,然后检查 WHERE 子句中的 id。

像这样的东西: -

UPDATE table1 dest INNER JOIN table2 src ON dest.id = src=id
SET dest.name = src.name, dest.description = src.description 
WHERE dest.id=1 ;

任何其他限制都可以添加到 WHERE 子句中

于 2013-06-04T11:35:40.490 回答
1

我认为您可以使用INNER JOIN查询来根据 table2 中的数据更新您的 table1 并将您的条件放在WHERE子句中

UPDATE table1 a
INNER JOIN table2 b
ON a.id = b.id
SET a.name = b.name,
a.description = b.description
WHERE a.id=1;
于 2013-06-04T11:36:04.077 回答