2010-03-13 62 views
5

假设我有表A,其中的字段可以是1或2 ...SQL根据行信息加入不同的表

如何选择对于表A中的每一行如果字段为1,加入与表B的选择,如果该字段是2,加入选择与表C?

+0

哇,当然! StackOverflow是有史以来最好的在线社区! 谢谢你们! – xster 2010-03-13 23:35:34

回答

8
(
SELECT MyField1, MyField2 FROM A 
INNER JOIN B ON A.Id = B.Id 
AND A.MyField = 1 
) 
UNION 
(
SELECT MyField1, MyField2 FROM A 
INNER JOIN C ON A.Id = C.Id 
AND A.MyField = 2 
) 
+0

电子方言很好回答 – Enrique 2010-03-13 23:34:55

0

Somethine这样可以工作

DECLARE @TableA TABLE(
     ID INT 
) 

DECLARE @TableB TABLE(
     ID INT, 
     Val VARCHAR(50) 
) 

DECLARE @TableC TABLE(
     ID INT, 
     Val VARCHAR(50) 
) 

INSERT INTO @TableA SELECT 1 
INSERT INTO @TableA SELECT 2 

INSERT INTO @TableB SELECT 1, 'B' 

INSERT INTO @TableC SELECT 2, 'C' 

SELECT * 
FROM @TableA a INNER JOIN 
     @TableB b ON a.ID = b.ID 
        AND a.ID = 1 
UNION 
SELECT * 
FROM @TableA a INNER JOIN 
     @TableC c ON a.ID = c.ID 
        AND a.ID = 2