SQL:别名列上的内部联接
时间:2020-03-06 14:32:05 来源:igfitidea点击:
以前,我曾要求从字段中剥离文本并将其转换为int,这成功完成了。但是现在,我想对这个新值做一个INNER JOIN。
所以我有这个:
SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999)) AS 'memId', userDetails.title, userDetails.lname FROM accountingTab INNER JOIN (SELECT id, title, first, last FROM memDetTab) AS userDetails ON memID = userDetails.id
然后我收到无效的列名memID
错误。
我怎样才能解决这个问题?
解决方案
重复整个表达式,而不是memId。
如果必须执行此操作,则会遇到设计问题。如果可以,我建议我们需要重构表或者关系。
我们可以重复整个表达式,也可以反向加入:
SELECT * FROM memDetTab JOIN (SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999)) AS 'memId', userDetails.title, userDetails.lname FROM accountingTab) subquery ON subquery.memID = memDetTab.ID