sql - 使用 Coalesce 时 '.' 附近的语法不正确

标签 sql sql-server sql-server-2008 coalesce

我正在尝试连接三个表,我成功连接了两个。

这有效(两个表)

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属于Users表

现在,当我尝试添加另一个表时:

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"

如果我只写 UserName 它给出了

"Ambiguous column name 'UserName'."

帮助。

最佳答案

可能 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

错误 “'.' 附近的语法不正确。”在行: 来自别名 HGSQLUsers.UserName 你可以使用它,但在配额中。

我还建议您为每个表使用别名,如下所示 - 对我来说更具可读性

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

关于sql - 使用 Coalesce 时 '.' 附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30161819/

相关文章:

sql - CTE 与 DELETE - SQL 数据仓库的替代方案

mysql - 长 mysql 查询

sql-server - 选择正确的 SQL Server 排序规则进行存储

sql-server - SQL 服务器 : using MERGE statement to update two tables

sql-server - 在查询中加入表值函数

sql-server - 在 Microsoft SQL Server 中删除并重新创建数据库

sql - ZF 子查询问题

sql - ORDER BY 索引列仍然很慢

sql-server - 复合索引 - SQL Server

sql - 大表的自定义排序和分页