当前位置: 首页 > 面试题库 >

用SQL中另一个表中的列更新表

薛焱
2023-03-14
问题内容

我需要根据从以下两个表中提取的数据创建一个新表:

第一表:

Var     cur_number
-------------------
 A        10
 B         8

第二张表:

Var    new_number
-------------------
 A          2
 A         11
 B          4
 B          6

新表应包含一个“ Var”列和一个“Number”列,其中每个变量将包含一行带有cur_number的行,其余各行将包含第二个表的new_number列中的数字,其中new_number <cur_number。例如,在上面显示的示例中,对于A,将有一行,行数为10(其cur_number),另一行为“ 2”(因为2 <10,但是11>10)。

在我的示例中,新表将为:

Var         Number
 A            10
 A            2
 B            8
 B            4
 B            6

数据库非常大,运行时间至关重要,因此我无法在两个表上使用UNION …


问题答案:

试试这个:

SELECT var, cur_number
FROM FirstTable
UNION
SELECT t2.var, t2.new_number
FROM Firsttable t1
INNER JOIN SecondTable t2 ON t2.new_number < t1.cur_number;

更新: 如果您使用的是SQL Server 2008或更高版本,则可以
MERGE
将两个表合并为一个表,如下所示:

MERGE INTO FirstTable AS TGT
USING SecondTable AS SRC
  ON  SRC.new_number >= TGT.cur_number
WHEN NOT MATCHED THEN
  INSERT (var, cur_number)
  VALUES (SRC.var, SRC.new_number);

sqlfiddle

这会将两个表的值合并到第一个表中。第一个表将包含:

VAR    CUR_NUMBER
A          10
B          8
A          2
B          4
B          6

注意: 使用时MERGE

  • 您必须MERGE使用分号终止该语句,这是强制性的。
  • 你不能INSERT里面WHEN MATCHED这就是为什么我用了反向条件>=WHEN NOT MATCHED


 类似资料:
  • 问题内容: 我已经阅读了很多有关如何更新多列的文章,但仍然找不到正确的答案。 我有一张桌子,我想从另一张桌子更新这张桌子。 如果我只运行select语句(在方括号之间),则脚本返回值,但无法使用update 问题答案: TSQL不支持行值构造函数。改用这个:

  • 问题内容: 表格1: 表2: 在oracle SQL中,如何运行 sql更新 查询,该查询可以使用表2并使用表2来更新表1 ?所以我得到的最终结果是 表格1: 问题答案: 这称为相关更新 假设联接导致键保留视图,您还可以

  • 我有两个表:包含5列(col1、col2、col3、col4、val1)的表1和包含5列(col1、col2、col3、col4、val2)的表2。1.表1.val1不包含任何值。2.对于表1和表2来说,col1、col2、col3和col4是相同的,它们是主键。 我想做的是,当table1.col1=table2.col1和table1.col2=table2.col2和table1.col3=

  • 问题内容: 我有两个桌子,看起来都像 我需要根据每个表中的检查名称复制from 到的值。 此声明有任何提示吗? 问题答案: 除了此答案外,如果您需要根据tableA.value动态更改tableB.value,则可以执行以下操作:

  • 问题内容: 我正在尝试执行以下更新查询: 该查询显然是错误的,因为它不起作用。我该如何解决? 该查询应该使用和()的串联值来更新列。但是,在另一个名为的表上,这就是为什么我尝试执行内部联接的原因。 我在做什么错,我该如何解决?非常感谢你。 问题答案: 我看不到任何迹象显示在文档即或 在支持的语句。 如果没有,也许您可​​以尝试相关的子查询。

  • 问题内容: 我正在尝试用TYPE2中找到的值覆盖TYPE1中找到的值。 我编写了此SQL进行尝试,但是由于某种原因它没有更新: http://www.sqlfiddle.com/#!3/a4733/17 为什么我的TYPE1中的值没有更新? 问题答案: 这对我有用