0
我有一个选择与子选择使用前1和where子句。SubSelect前1或左连接
我试图通过做子选择的左连接来优化选择,但查询时间花了更长的时间。在这种情况下再选择更好吗?我不能发布我的整个选择,因为它是太长,保密,但我会尝试重新跌破重要组成部分:
子选择
SELECT
(select top 1 colId FROM table1 WHERE col1 = b.Id and col2 = 3 Order by 1) Id3,
(select top 1 colId FROM table1 WHERE col1 = b.Id and col2 = 5 Order by 1) Id5,
(select top 1 colId FROM table1 WHERE col1 = b.Id and col2 = 7 Order by 1) Id7
FROM table2 b
尝一尝W /左连接
SELECT
t1.colid id3,
t2.colid id5,
t3.colid id7
FROM table2 b
LEFT JOIN (
select colId, col1 FROM table1 WHERE col2 = 3
) t1 ON t1.col1 = b.Id
LEFT JOIN (
select colId, col1 FROM table1 WHERE col2 = 5
) t2 ON t1.col1 = b.Id
LEFT JOIN (
select colId, col1 FROM table1 WHERE col2 = 7
) t3 ON t1.col1 = b.Id
有一个更好的方法吗?为什么左连接需要更长的查询时间?
没有'ORDER BY'子句的'TOP'没有意义。另外:你的两个查询是不相同的。 –
即时对不起,你是正确的,我会编辑。我忘了把订单通过 – Sid
我认为你需要一个'INNER JOIN',而不是'LEFT JOIN'。 –