【问题标题】:SQL: simple custom column in select doesn't work? [closed]SQL:选择中的简单自定义列不起作用? [关闭]
【发布时间】:2016-04-01 00:36:31
【问题描述】:

如果我在选择中添加自定义列,我会收到此错误:

20018 列名“2”无效。

这里是查询示例

SELECT
    [msg].[MessageTo],
    [msg].[MessageFrom],
    [msg].[SendTime],
    [msg].[ReceiveTime],
    [msg].[id],
    '2' AS source,
    [kat].[id] AS [CategoriId],
    [kat].[naziv] AS [CategoriName]
FROM
    [SMSServer_1].[dbo].[MessageIn] AS [msg]
LEFT JOIN [Tekijanka].[dbo].[crm_poruka] AS [por] ON [por].[fk_poruka] = [msg].[id]
AND [por].[fk_source] = [2]
LEFT JOIN [Tekijanka].[dbo].[crm_kategorije_poruka] AS [kat] ON [kat].[id] = [por].[fk_kategorija]
WHERE
    msg.id NOT IN (
        SELECT
            fk_poruka
        FROM
            Tekijanka.dbo.crm_poruka
        WHERE
            fk_status <> 1
    )
ORDER BY
    [SendTime] DESC

有什么办法可以解决吗?

【问题讨论】:

  • AND [por].[fk_source] = [2]?任何表中都没有列名[2]。可能你想要AND [por].[fk_source] = 2 2 是一个整数值,[2] 是标识符
  • 和 por,fk_source = 2 。 "por" 是表 "crm_poruka"....我在加入条件下需要它
  • 删除方括号。没有名为 [2] 的列。
  • 我使用 laravel eloquent,它会自动添加方括号,我强制它不添加,现在它可以工作了......非常感谢,你帮助了我:)

标签: sql sql-server sql-server-2008 tsql laravel


【解决方案1】:

问题出在LEFT JOIN,而不是SELECT部分:

AND [por].[fk_source] = [2]

此条件尝试加入fk_source 和列命名 [2]。当然,MessageIncrm_poruka 表中没有这样的列。您必须更改这部分代码(删除条件或将其更改为AND [por].[fk_source] = 2)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2016-05-22
    • 1970-01-01
    相关资源
    最近更新 更多