【问题标题】:Syntax error in SQL query with attributes containing sub queries具有包含子查询的属性的 SQL 查询中的语法错误
【发布时间】:2018-06-19 12:32:20
【问题描述】:

我正在编写需要三列的 SQL 查询。其中之一是 COUNT,它是多个子查询的结果。我在 FROM.. 行收到错误“SQL 命令未正确结束”。我想这是一个语法错误,与上面的 COUNT 部分有关。我可以就我做错的事情寻求帮助吗?

SELECT STUDENTS.NAME AS NAME,
      ADDRESS.CITY AS CITY,
      COUNT(*) AS MY_COUNT FROM (SELECT MYSTATE FROM SOME_TABLE
                                  WHERE SOME_ATTRIBUTE IN 
                                                   (SELECT SUBQUERY_2 = 
                                                                     (SUBQUERY_3))) 
FROM MYSCHEMA.ADDRESS ADDRESS --Error: SQL command not properly ended
  INNER JOIN SCHEMA.STUDENTS STUDENTS
  ON ADDRESS.ID=STUDENTS.ID

GROUP BY STUDENTS.NAME, STUDENTS.CITY

【问题讨论】:

  • 您通常按您选择的列进行分组,除了那些作为设置函数的参数的列。
  • 呃,你有两个FROMs:FROM (SELECT MYSTATE ...FROM MYSCHEMA.ADDRESS ...。必须只有一个 FROM 子句。这就是为什么在第二个 FROM 子句中出现错误的原因。
  • 在您的查询中,有两个 From 这就是为什么您在第二个 From 子句中出现错误的原因。
  • 谢谢,@KavalPatel,@sticky 位。当必须是子查询的结果时,收集MY_COUNT 的正确方法是什么?
  • @zimmer,请检查我是否发布了答案,让我知道您是否会得到答案。

标签: sql count subquery


【解决方案1】:

我想您的第一个 FROM 与您想要依靠的表/查询有某种关系。如果是这样,这是错误的形式。你需要把它变成一个标量子查询:

SELECT STUDENTS.NAME AS NAME,
      ADDRESS.CITY AS CITY,
      (SELECT COUNT(*) FROM (...) WHERE ...) AS MY_COUNT  
FROM MYSCHEMA.ADDRESS ADDRESS 
...

从您提供给我们的内容中无法猜测内部 FROM/WHERE 内部需要进入的内容。那是因为“其中一个是 COUNT,它是多个子查询的结果”作为对 WHAT 您试图实现(计数)精确 的解释完全不够。因此,如果您需要这方面的帮助,请详细说明HOW“COUNT 是多个子查询的结果”。

【讨论】:

    【解决方案2】:

    现在试试这个解决方案:

    SELECT STUDENTS.NAME AS NAME,ADDRESS.CITY AS CITY,
    (SELECT COUNT(*) FROM SOME_TABLE WHERE SOME_ATTRIBUTE IN (SELECT SUBQUERY_2 = (SUBQUERY_3))) AS MY_COUNT 
    FROM MYSCHEMA.ADDRESS ADDRESS 
    INNER JOIN SCHEMA.STUDENTS STUDENTS  ON ADDRESS.ID=STUDENTS.ID
    GROUP BY STUDENTS.NAME, STUDENTS.CITY
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多