SQL Server 2008,如何连接不同属性上的表

SQL Server 2008,如何连接不同属性上的表,sql,sql-server,Sql,Sql Server,我有两张这样的桌子: 表A: 表B: 联接表: ID Val VAL2 1 10 50 2 20 100 3 30 45 4 40 80 5 50 90 因此,表A中的ID与表B中的ID匹配 1 - sd, 2 - bf, 3 - ww, 4 - gh, 5 - dv 我怎样才能加入这两个 select A.ID, A.VAL, B.Val from tableA A **left join tableB B on A.ID = B.ID ??** 谢谢大家! 这里有

我有两张这样的桌子:

表A:

表B:

联接表:

ID Val VAL2 
1  10  50
2  20  100
3  30  45
4  40  80
5  50  90
因此,表A中的ID与表B中的ID匹配

1 - sd, 2 - bf, 3 - ww, 4 - gh, 5 - dv
我怎样才能加入这两个

select A.ID, A.VAL, B.Val
from tableA A
**left join tableB B on A.ID = B.ID ??**

谢谢大家!

这里有一个不需要使用临时表的选项,即创建一个内联表,其中包含表a的ID值到表B的ID值的映射

SELECT t1.ID AS ID
       t1.VAL AS Val,
       t3.VAL2 AS Val2
FROM tableA t1
INNER JOIN
(
    SELECT 1 AS IDA, 'sd' AS IDB
    UNION ALL
    SELECT 2 AS IDA, 'bf' AS IDB
    UNION ALL
    SELECT 3 AS IDA, '22' AS IDB
    UNION ALL
    SELECT 4 AS IDA, 'gh' AS IDB
    UNION ALL
    SELECT 5 AS IDA, 'dv' AS IDB
) t2
    ON t1.ID = t2.IDA
INNER JOIN tableB t3
    ON t2.IDB = t3.ID

这里的一个选项(不需要使用临时表)是创建一个内联表,其中包含表a的ID值到表B的ID值的映射

SELECT t1.ID AS ID
       t1.VAL AS Val,
       t3.VAL2 AS Val2
FROM tableA t1
INNER JOIN
(
    SELECT 1 AS IDA, 'sd' AS IDB
    UNION ALL
    SELECT 2 AS IDA, 'bf' AS IDB
    UNION ALL
    SELECT 3 AS IDA, '22' AS IDB
    UNION ALL
    SELECT 4 AS IDA, 'gh' AS IDB
    UNION ALL
    SELECT 5 AS IDA, 'dv' AS IDB
) t2
    ON t1.ID = t2.IDA
INNER JOIN tableB t3
    ON t2.IDB = t3.ID

你需要这样做。但你不应该这样做。最好阅读关系数据库系统和规范化。你是如何假设1-sd、2-bf、3-ww、4-gh、5-dv的??这里的任何规则??从id='sd'时的选择案例中选择*进入abc,然后在id='bf'时选择1,然后在id='ww'时选择2,然后在id='gh'时选择3,然后在id='gh'时选择4,其他5结束为idd,*从表格b中选择tempabc.idd,a.val,tempabc.val,从abc中选择tempabc在a.id=tempabc.idd上加入表格a按idd排序您需要。但你不应该这样做。最好阅读关系数据库系统和规范化。你是如何假设1-sd、2-bf、3-ww、4-gh、5-dv的??这里的任何规则??从id='sd'时的选择案例中选择*进入abc,然后在id='bf'时选择1,然后在id='ww'时选择2,然后在id='gh'时选择3,然后在id='gh'时选择4,其他5结束为idd,*从表格b中选择tempabc.idd、a.val、tempabc.val,从abc tempabc中选择a.id=tempabc.idd按idd顺序加入表格a
SELECT t1.ID AS ID
       t1.VAL AS Val,
       t3.VAL2 AS Val2
FROM tableA t1
INNER JOIN
(
    SELECT 1 AS IDA, 'sd' AS IDB
    UNION ALL
    SELECT 2 AS IDA, 'bf' AS IDB
    UNION ALL
    SELECT 3 AS IDA, '22' AS IDB
    UNION ALL
    SELECT 4 AS IDA, 'gh' AS IDB
    UNION ALL
    SELECT 5 AS IDA, 'dv' AS IDB
) t2
    ON t1.ID = t2.IDA
INNER JOIN tableB t3
    ON t2.IDB = t3.ID
SELECT a.ID, a.VAL, B.VAL2 FROM 
(
SELECT CASE WHEN ID = 'sd' THEN 1
WHEN ID = 'bf' THEN 2
WHEN ID =  'ww' THEN 3
WHEN ID = 'gh' THEN 4
WHEN ID = 'dv' THEN 5
END AS ID, VAL2 FROM tableB
) AS t INNER JOIN tableA a ON a.ID = t.Id