我有SQL查询:
SELECT DISTINCT t1.inn,
t1.idx,
(SELECT TOP 1 adr
FROM t2
WHERE t2.idx = t1.idx
AND t2.inn = t1.inn) ADR,
(SELECT TOP 1 name
FROM t2
WHERE t2.idx = t1.idx
AND t2.inn = t1.inn) NAME
FROM t1
是否可以将一个子查询改为两个子查询? (即同时选择TOP 1 ADR和NAME)。服务器:MS SQL 2008-2012。
答案 0 :(得分:5)
您可以使用cross apply
:
select distinct t1.INN, t1.IDX, t2.adr, t2.name
from t1 cross apply
(select top 1 adr, name
from t2
where t2.idx = t1.idx and t2.inn = t1.inn
) t2;
但是,您选择的是没有订单的行。如果只有一行匹配,则可以使用常规连接执行此操作。