【问题标题】:Incorrect syntax; EE.EnemyId could not be bound语法错误; EE.EnemyId 无法绑定
【发布时间】:2018-04-18 01:18:48
【问题描述】:
SELECT YEAR(EpisodeDate), EN.EnemyName, Count (*) AS [Number of Episodes]
FROM tblEpisode AS E INNER JOIN
     tblEpisodeEnemy AS EE
     ON EE.EpisodeId = E.EpisodeId INNER JOIN
     tblEnemy AS EN INNER JOIN
     ON EE.EnemyId = EN.EnemyId
GROUP BY EpisodeDate, EnemyName 

【问题讨论】:

  • 该列在表中不存在。修正名称。
  • 由于某种原因,它在切换句子中连接的出现顺序后确实有效,该列确实存在

标签: sql sql-server syntax


【解决方案1】:

这不会修复您的语法错误(这是因为您正在引用表中不存在的列)。

但是,毫无疑问,您需要每年一排。所以,你需要修复你的GROUP BY

SELECT YEAR(EpisodeDate), EN.EnemyName, Count(*) AS num_episodes
FROM tblEpisode E INNER JOIN
     tblEpisodeEnemy EE
     ON EE.EpisodeId = E.EpisodeId INNER JOIN
     tblEnemy EN INNER JOIN
     ON EE.EnemyId = EN.EnemyId
GROUP BY YEAR(EpisodeDate), EN.EnemyName 

【讨论】:

    【解决方案2】:

    由于额外的 INNER JOIN 导致语法错误

    SELECT YEAR(EpisodeDate), EN.EnemyName, Count (*) AS [Number of Episodes]
    FROM tblEpisode AS E INNER JOIN
         tblEpisodeEnemy AS EE
         ON EE.EpisodeId = E.EpisodeId INNER JOIN
         tblEnemy AS EN /*INNER JOIN*/
         ON EE.EnemyId = EN.EnemyId
    GROUP BY EpisodeDate, EnemyName 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2014-05-26
      • 1970-01-01
      相关资源
      最近更新 更多