Sql server 基于现有列值获取记录的SQL查询

Sql server 基于现有列值获取记录的SQL查询,sql-server,Sql Server,我想编写SQL查询来检索下面的数据 表1->ID\u 1/ID\u 2由表2的主键组成 基于此,在预期结果中要求值1和值2。 在代码级别,我从表1中检索信息&通过迭代执行另一个查询来获取Value1/Value2的记录 我想编写SQL查询,一次获取整个数据。您只需加入表2两次 SELECT T1.[User], T1.[Data], T1.ID_1, Value1 = T2.Value, T1.ID_2, Value2 = T3.Value

我想编写SQL查询来检索下面的数据

表1->ID\u 1/ID\u 2由表2的主键组成

基于此,在预期结果中要求值1和值2。 在代码级别,我从表1中检索信息&通过迭代执行另一个查询来获取Value1/Value2的记录


我想编写SQL查询,一次获取整个数据。

您只需加入表2两次

SELECT
    T1.[User],
    T1.[Data],
    T1.ID_1,
    Value1 = T2.Value,
    T1.ID_2,
    Value2 = T3.Value
    FROM Table1 T1
       INNER JOIN Table2 T2
          ON T1.ID_1 = T2.ID
       INNER JOIN Table2 T3
          ON T1.ID_2 = T3.ID

您可以在两个id列上将表1与表2联接两次:

select t1.*, 
    t2_1.value as value1,
    t2_2.value as value2
from table_1 t1
join table t2_1 on t1.id_1 = t2_1.id
join table t2_2 on t1.id_2 = t2_2.id;
如果表_1中的任何id列可为空,请将内部联接更改为左。比如:

select t1.*, 
    t2_1.value as value1,
    t2_2.value as value2
from table_1 t1
left join table t2_1 on t1.id_1 = t2_1.id
left join table t2_2 on t1.id_2 = t2_2.id;

尝试以下工作示例:

DECLARE @Table1 TABLE([User] VARCHAR(100),Data VARCHAR(100),ID_1 INT,ID_2 INT);
INSERT INTO @Table1 VALUES('Admin','data',1,2)
                         ,('test','data',3,2) 

DECLARE @Table2 TABLE(ID INT,Value VARCHAR(100));
INSERT INTO @Table2 VALUES(1,'ABC')
                         ,(2,'PQR')
                         ,(3,'XYZ');  
SELECT t1.[User]
      ,t1.Data
      ,t1.ID_1
      ,t2a.Value
      ,t1.ID_2
      ,t2b.Value
FROM @Table1 AS t1
LEFT JOIN @Table2 AS t2a ON t1.ID_1=t2a.ID
LEFT JOIN @Table2 AS t2b ON t1.ID_2=t2b.ID
结果

User    Data    ID_1    Value   ID_2    Value
Admin   data    1       ABC     2       PQR
test    data    3       XYZ     2       PQR

到目前为止你试过什么?考虑查找<代码>(内部)连接< /代码>的语法。是的,我已经尝试了内部连接(表上。IDY1=表2。ID),但不知道如何将它应用于多个列。