如何从SQL Server中的SELECT更新-如果SELECT返回多个项目(后续问题2334712)
这是问题的后续行动 如果我使用问题2334712中的查询,我将如何在表A中插入“ABC”、“BCD”或“DEF” 我试过了,但无法在查询中使用ORDERBY子句 如果是升序,查询结果应该是ABC,如果是降序,查询结果应该是DEF,或者基于另一列上的键,比如B3如何从SQL Server中的SELECT更新-如果SELECT返回多个项目(后续问题2334712),sql,sql-server,tsql,Sql,Sql Server,Tsql,这是问题的后续行动 如果我使用问题2334712中的查询,我将如何在表A中插入“ABC”、“BCD”或“DEF” 我试过了,但无法在查询中使用ORDERBY子句 如果是升序,查询结果应该是ABC,如果是降序,查询结果应该是DEF,或者基于另一列上的键,比如B3 连接到一个子查询,该子查询为B1的每个值标识一条记录: 本例假设您希望记录的每个B1值都具有最低的B2值。但是,您可以更改对ROW_号码的呼叫,但您需要使用不同的顺序。您可以在下面尝试使用ROW_号码 WITH t1 AS ( S
连接到一个子查询,该子查询为B1的每个值标识一条记录:
本例假设您希望记录的每个B1值都具有最低的B2值。但是,您可以更改对ROW_号码的呼叫,但您需要使用不同的顺序。您可以在下面尝试使用ROW_号码
WITH t1 AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY B1 ORDER BY B3 desc) rownum
FROM Table_B
)
UPDATE a
SET A2 = b.B2
FROM Table_A a
INNER JOIN t1 b
ON a.A1 = b.B1 AND rn=1
WHERE
a.A1 < 10;
也可以使用相关子查询
UPDATE a
SET A2 = b.B2
FROM Table_A a
INNER JOIN Table_B b
ON a.A1 = b.B1 AND exists (select max(B3) from Table_B c on b.B1 and c.B1)
WHERE
a.A1 < 10;
您可以使用“with”表, 诸如此类:
WITH AAA (T_B, ID)
AS
(
SELECT TOP (SELECT COUNT(*) FROM Table_A) Table_B.B2 AS RR ,Table_A.A1
FROM Table_A INNER JOIN Table_B
ON Table_A.A1 = Table_B.B1
WHERE Table_A.A1 < 10
ORDER BY 1 DESC-- OR ASC
)
UPDATE Table_A
SET Table_A.A2 = T_B
FROM AAA
表B中B1=1有三个值。在你的问题中,你说的是基于我的选择-你能解释一下你的选择吗?选择可以是B3中的最高值、B3中的最低值或B3中的特定值,例如B3=2
UPDATE a
SET A2 = b.B2
FROM Table_A a
INNER JOIN Table_B b
ON a.A1 = b.B1 AND exists (select max(B3) from Table_B c on b.B1 and c.B1)
WHERE
a.A1 < 10;
WITH AAA (T_B, ID)
AS
(
SELECT TOP (SELECT COUNT(*) FROM Table_A) Table_B.B2 AS RR ,Table_A.A1
FROM Table_A INNER JOIN Table_B
ON Table_A.A1 = Table_B.B1
WHERE Table_A.A1 < 10
ORDER BY 1 DESC-- OR ASC
)
UPDATE Table_A
SET Table_A.A2 = T_B
FROM AAA