将多个子查询转换为联接

时间:2015-08-20 13:04:43

标签: sql sql-server tsql

我的sql中有多个子查询

SELECT *, 
(SELECT Col1 FROM MYTABLE2 WHERE SAME) AS Col1,
(SELECT Col2 FROM MYTABLE2 WHERE SAME) AS Col2,
(SELECT Col3 FROM MYTABLE2 WHERE SAME) AS Col3,
(SELECT Col4 FROM MYTABLE2 WHERE SAME) AS Col4,
FROM MYTABLE1 WHERE XXX 

如何将其转换为一个JOIN?子查询是相同的,只有Select列名称不同。

3 个答案:

答案 0 :(得分:1)

SELECT MYTABLE1.*, MYTABLE2.*
  FROM MYTABLE1 
  LEFT OUTER JOIN MYTABLE2  
    ON same 
 WHERE XXX 

ON不必将两个表关联起来 这更像是过滤后的交叉连接

答案 1 :(得分:0)

也许你应该使用UNION而不是JOIN?

答案 2 :(得分:0)

SELECT t1.*, t2.col1, t2.col2, t2.col3, t2.col4
FROM MYTABLE1 T1
INNER JOIN MYTABLE2 T2 
ON T1.somecol = T2.somecol --replace with appropriate join condition
WHERE XXX 
and --same conditions as previous (WHERE SAME)

这就是你要做的。您应该根据在线注释进行必要的更改。