【问题标题】:SQL : i got an Ambiguous errorSQL:我得到一个不明确的错误
【发布时间】: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 标签?

标签: mysql sql ambiguous


【解决方案1】:

CARD_ID 的每个选择上添加表名,类似于SELECT Tab1.CARD_ID FROM ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2014-01-25
    相关资源
    最近更新 更多