很想知道是否有办法编写以下T-SQL语句(这一个错误与嵌套选择中的TableA无法绑定。)删除错误行似乎认为TableB中的所有记录都会执行连接。 / p>
select *
from TableA A
join (
select TableAid, TableBinfo
from TableB
where TableB.TableAid = A.TableAid -- error line
group by TableAid, TableBinfo
) B on
A.TableAid = B.TableAid
where A.TableAid = 123
以下SQL是我能想到的最好的吗?
我真的想将不同的比较限制在一个表中的一列而不是我选择的所有列。我无法控制数据库,除了主键外,它没有任何索引。
select A.TableAid, B.TableBinfo
from TableA A
join TableB B on
A.TableAid = B.TableAid
where A.TableAid = 123
group by A.TableAid, B.TableBinfo
答案 0 :(得分:3)
您的第一个示例看起来像是在尝试对相关子查询执行APPLY:
SELECT *
FROM TableA a
CROSS APPLY
(
SELECT t.TableBInfo
FROM TableB t
WHERE a.TableAId = b.TableBId
GROUP BY b.TableBInfo
) b
WHERE a.TableAId = 123