[英]MySQL Unknown column in 'on clause'
我的查詢看起來像
SELECT t2.id, t3.id, t3.sys_modified_date, t3.sys_created_date,
t3.email, t3.enabled, t3.password, t3.passwordagain, t4.id,
t4.sys_modified_date, t4.sys_created_date, t4.job, t4.name,
t4.surname, t3.retrivalHash, t3.username
FROM Customer_Contractor t0 INNER JOIN Contractor t1 ON t0.contractor =
t1.id INNER JOIN User t3 ON t2.id = t3.partyId LEFT OUTER JOIN
Profile t4 ON t3.profileId = t4.id, Party t2
WHERE t0.customer = ?
ORDER BY t2.id ASC
我收到錯誤:
'on子句'中的未知列't2.id'
我不知道有什么問題,請幫幫我。
在您的查詢中, Party t2
與其他ANSI-92連接表的范圍不同 - 這就是INNER JOIN User t3 ON t2.id = t3.partyId
失敗的原因。
我懷疑你想要的東西:
SELECT t2.id, t3.id, t3.sys_modified_date, t3.sys_created_date,
t3.email, t3.enabled, t3.password, t3.passwordagain, t4.id,
t4.sys_modified_date, t4.sys_created_date, t4.job, t4.name,
t4.surname, t3.retrivalHash, t3.username
FROM Customer_Contractor t0
INNER JOIN Contractor t1 ON t0.contractor = t1.id
INNER JOIN Party t2 ON t1.id = t2.id
INNER JOIN User t3 ON t2.id = t3.partyId
LEFT OUTER JOIN Profile t4 ON t3.profileId = t4.id
WHERE t0.customer = ?
ORDER BY t2.id ASC
正確。 首次使用別名時,沒有帶別名t2
表
你這樣做
Customer_Contractor t0
INNER JOIN
Contractor t1 ON t0.contractor = t1.id
INNER JOIN
User t3 ON t2.id = t3.partyId
LEFT OUTER JOIN
Profile t4 ON t3.profileId = t4.id
CROSS JOIN
Party t2
當我懷疑你想要這個(真的嗎?一個交叉連接?)
Customer_Contractor t0
INNER JOIN
Contractor t1 ON t0.contractor = t1.id
CROSS JOIN
Party t2
INNER JOIN
User t3 ON t2.id = t3.partyId
LEFT OUTER JOIN
Profile t4 ON t3.profileId = t4.id
您需要顯式連接到Party表(別名為t2)。 沒有這個JOIN,on條件就沒有意義了。
在不知道表格結構的情況下,很難知道如何明確加入Party。
ON
子句只能“看到”在同一個表引用組中的ON
子句左側定義的表別名,換句話說,在同一個連接組中。
t2
別名既不在引用它的特定ON
子句的左側,也不在同一個表引用組中。 (不同的組用逗號分隔。)
WHERE
子句是唯一可以引用所有表引用組中定義的別名的位置。 但如果我是你,我會用適當的顯式連接替換該逗號連接。
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.