我需要根据从以下两个表中提取的数据创建一个新表:
第一表:
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);
这会将两个表的值合并到第一个表中。第一个表将包含:
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中的值没有更新? 问题答案: 这对我有用