【发布时间】:2018-06-14 02:42:16
【问题描述】:
select [CLIENT_SUIT_ID]
,[CLIENT_CODE]
,[CARD_ID]
,[EXPIRE_DATE]
,ROW_NUMBER()over(partition by CARD_ID order by CARD_ID ASC)
from [KSS_TMP].[dbo].[CLIENT_SUIT] as Tab1 JOIN
(SELECT CARD_ID FROM [KSS_TMP].[dbo].[CLIENT_SUIT]
where CLIENT_CODE NOT LIKE '080%' AND CARD_ID != '-'
GROUP BY CARD_ID
HAVING COUNT(CARD_ID) > 1 ) as Tab2 ON Tab1.CARD_ID = Tab2.CARD_ID
当我尝试执行此代码时,我得到一个“不明确的列名 'CARD_ID'。我在这里做错了什么?
【问题讨论】:
-
我试了tab1和tab2,都不行
-
您有 6 次使用 CARD_ID 可能会导致问题。该错误意味着 SQL 解析器被这 6 个中的一个混淆了。解决方案是给每个表引用一个别名,然后在引用该表中的列时使用该别名。这使解析器清楚您打算使用哪一列,这让您和解析器都感到高兴。
-
谢谢肯,我会看看 :)
-
为什么是 MySQL 标签?