简体   繁体   English

“。”附近的语法不正确 使用Coalesce时

[英]Incorrect syntax near '.' while using Coalesce

I am trying to join three tables, I joined two successfully. 我想加入三张桌子,我成功加入了两张桌子。

This Worked (Two Tables) 这个工作(两个表)

SELECT  ImportExportBadFile.ID, ImportExportSettingID,
    ImportExportBadFile.UserID,
    Coalesce(UserName,'') UserName  
    FROM
    ImportExportBadFile 
    LEFT OUTER JOIN Users HGSQLUsers ON ImportExportBadFile.UserID = HGSQLUsers.ID
    ORDER BY  ImportExportBadFile.DateTimeStamp DESC
  • UserName belongs to Users Table UserName属于Users Table

Now, when I tried to add another Table: 现在,当我尝试添加另一个表时:

SELECT  ImportExportBadFile.ID, ImportExportSettingID,
    SETT.Name,
    ImportExportBadFile.UserID,
    Coalesce(UserName,'') HGSQLUsers.UserName  
    FROM
    ImportExportBadFile 
    LEFT OUTER JOIN Users HGSQLUsers ON ImportExportBadFile.UserID = HGSQLUsers.ID
    INNER JOIN ImportExportSettings SETT ON ImportExportBadFile.ImportExportSettingID = SETT.ID  
    ORDER BY  ImportExportBadFile.DateTimeStamp DESC

It gives Error : "Incorrect syntax near '.'." 它给出了错误:“'。'附近的语法不正确。” at line : "Coalesce(UserName,'') HGSQLUsers.UserName" at line:“Coalesce(UserName,'')HGSQLUsers.UserName”

If I write only UserName It gives 如果我只写UserName它给

"Ambiguous column name 'UserName'." “不明确的列名'UserName'。”

Help. 救命。

Probably UserName column exists in both tables, you need to specify from which table do want to take UserName as below 可能两个表中都存在UserName列,您需要指定从哪个表中获取UserName ,如下所示

SELECT  ImportExportBadFile.ID, ImportExportSettingID,
    SETT.Name,
    ImportExportBadFile.UserID,
    Coalesce( HGSQLUsers.UserName  ,'') as "HGSQLUsers.UserName"
    FROM
    ImportExportBadFile 
    LEFT OUTER JOIN Users HGSQLUsers ON ImportExportBadFile.UserID = HGSQLUsers.ID
    INNER JOIN ImportExportSettings SETT ON ImportExportBadFile.ImportExportSettingID = SETT.ID
ORDER BY  ImportExportBadFile.DateTimeStamp DESC

Error "Incorrect syntax near '.'." at line : 错误"Incorrect syntax near '.'." at line : "Incorrect syntax near '.'." at line : comes from alias HGSQLUsers.UserName you can use it but in quotas. "Incorrect syntax near '.'." at line :来自别名HGSQLUsers.UserName你可以在配额中使用它。

I also recommend you to use aliases for every table as below - is more readable for me 我还建议你为每个表使用别名,如下所示 - 对我来说更具可读性

SELECT  I.ID, I.ImportExportSettingID,
        SETT.Name,
        I.UserID,
       Coalesce( HGSQLUsers .UserName  ,'') as "HGSQLUsers.UserName"
FROM ImportExportBadFile I
LEFT OUTER JOIN Users HGSQLUsers ON I.UserID = HGSQLUsers.ID
INNER JOIN ImportExportSettings SETT ON I.ImportExportSettingID = SETT.ID  
ORDER BY  I.DateTimeStamp DESC

Actually this worked for me in trial and error: 实际上,这在试验和错误中对我有用:

SELECT  ImportExportBadFile.ID, ImportExportSettingID,
    SETT.Name,
    ImportExportBadFile.UserID,
    Coalesce(HGSQLUsers.UserName,'')
    FROM
    ImportExportBadFile 
    INNER JOIN ImportExportSettings SETT ON ImportExportBadFile.ImportExportSettingID = SETT.ID  
    LEFT OUTER JOIN Users HGSQLUsers ON ImportExportBadFile.UserID = HGSQLUsers.ID
    ORDER BY  ImportExportBadFile.DateTimeStamp DESC

but @Parado's Answer is more specific and explaining. 但是@Parado的答案更具体和解释。

Thank you. 谢谢。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM