SQL:别名列上的内连接

时间:2008-09-22 10:58:23

标签: sql inner-join

以前我要求从字段中删除文本并将其转换为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错误。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

您可以重复整个表达式或反转您的联接:


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

答案 1 :(得分:1)

而不是memId,重复整个表达。

答案 2 :(得分:0)

如果必须这样做,则存在设计问题。如果你能,我建议你需要重构你的桌子或关系。