【问题标题】:Sqlite and nested query in the from statementfrom 语句中的 Sqlite 和嵌套查询
【发布时间】:2013-01-14 10:04:51
【问题描述】:

我目前正在使用 SQLite,我被这个查询吓坏了

    SELECT Cur.Name, SUM(Cur.Added+Cur.Removed) AS Lines, COUNT(DISTINCT(Cur.Author)) AS authCurrent,
       ( SELECT COUNT(DISTINCT(Author)) 
         FROM Change
         WHERE Extencion = "java" AND
             Date >= date('2012-04-08') AND
             Date < date('2012-04-15')
         ) AS totCurrent
    FROM 
       Change AS Cur,
       ( SELECT a.Name, COUNT(DISTICT(a.Author)) AS authLast
         FROM Change AS a
         WHERE a.Extencion = "java" AND
           a.Date >= date('2012-04-08') AND
           a.Date < date('2012-04-15')
       GROUP BY a.Name ) AS Previous
    WHERE
       Previous.Name = Cur.Name
       Cur.Extencion = "java" AND
       Cur.Date >= date('2012-04-15') AND
       Cur.Date < date('2012-04-22')
   GROUP BY Cur.Name

它说“查询错误:靠近“Cur”:语法错误无法执行语句” 我不知道,会不会是因为 SQLite 不支持嵌套查询而导致查询不可执行?

无论如何,Table Change 有如下形式

      Author | Path | Extencion | Name | Date | Added | Removed

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    您在此行中的DISTINCT 似乎拼写错误:

    COUNT(DISTICT(a.Author)) AS authLast  -- change to DISTINCT
    

    您是否也尝试过这样的查询:

    SELECT Cur.Name, 
      SUM(Cur.Added+Cur.Removed) AS Lines, 
      COUNT(DISTINCT(Cur.Author)) AS authCurrent,
      Previous.authLast AS totCurrent
    FROM Change AS Cur
    LEFT JOIN 
    ( 
      SELECT a.Name, COUNT(DISTINCT(a.Author)) AS authLast
      FROM Change AS a
      WHERE a.Extencion = "java" AND
        a.Date >= date('2012-04-08') AND
        a.Date < date('2012-04-15')
      GROUP BY a.Name
    ) AS Previous
      ON Previous.Name = Cur.Name
    WHERE 
           Cur.Extencion = "java" AND
           Cur.Date >= date('2012-04-15') AND
           Cur.Date < date('2012-04-22')
    GROUP BY Cur.Name, Previous.authLast
    

    【讨论】:

    • 是的,我把它复制到 html 表单上时拼错了,但是数据库上的查询拼写正确
    • @user1384636 您是否尝试运行我发布的查询版本?
    猜你喜欢
    • 2015-06-12
    • 2018-12-26
    • 2021-12-24
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多