create table TableA (A1 int)
create table TableB (B1 int, B2 int)
create table TableC (C1 int)
有問題的查詢:
SELECT *
FROM TableA a
INNER JOIN TableB b ON b.B1=a.A1
INNER JOIN (SELECT TOP 1 *
FROM TableC c
WHERE c.C1=b.B1 ORDER BY c.C1) d ON d.C2=b.B2
INNER JOIN OtherTable ON OtherTable.Foo=d.C1
構建這個架構和SQL Server下運行的查詢中SQLFiddle 2008年的業績:
The multi-part identifier "b.B1" could not be bound.: SELECT * FROM TableA a INNER JOIN TableB b ON b.B1=a.A1 INNER JOIN (SELECT TOP 1 * FROM TableC c WHERE c.C1=b.B1 ORDER BY c.C1) d ON d.C2=b.B2
對子查詢修復使用CROSS APPLY而不是INNER JOIN問題
什麼問題?
編輯:我添加了「TOP 1」,它是真正的查詢的一部分,它是問題的一個相關部分。
編輯2:有關該問題的更多信息。
好的。看看你的子查詢。您按C1篩選,然後按C1排序。什麼意思?我認爲你必須'訂購'C2。 –
這是真正的查詢的抽象 –
但是你扭曲了邏輯。看到我更新的答案。 –