首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RMySQL: SQL语法错误不可识别

RMySQL: SQL语法错误不可识别
EN

Stack Overflow用户
提问于 2018-06-29 13:47:51
回答 1查看 45关注 0票数 1

这是连续的从我的previous question。我使用R中的RMySQL包向MySQL数据库发送suery。错误说明语法有问题,但我找不到错误部分。有人能帮我纠正这个错误吗?

数据表如下所示:

代码语言:javascript
复制
organisation    Tour_ID             A           B           C           D  
Ikea                  a    2018-04-01  2018-05-07  2018-05-09  2018-05-01
Ikea                  a    2018-06-01  2018-05-03  2018-05-29          NA   
Ikea                  a    2018-04-02  2018-05-01  2018-07-08  2018-05-26 
Ikea                  b    2018-06-02  2018-05-01          NA  2018-05-26
Ikea                  b    2018-06-02  2018-05-01          NA  2018-05-26
Ikea                  b            NA  2018-05-05  2018-08-02  2018-06-01
Ikea                  c    2018-06-01  2018-05-07  2018-05-09  2018-05-01
Ikea                  c    2018-06-01  2018-05-03          NA          NA   
Ikea                  c    2018-08-02  2018-05-09  2018-07-08  2018-05-26

我写的语法是:

代码语言:javascript
复制
cond <- "SELECT t.* FROM myTable t JOIN  
                                   (SELECT organisation, Tour_ID, 
                                    FROM myTable WHERE organisation LIKE "Ikea"  
                                    GROUP BY organisation, Tour_ID 
                                    HAVING A >= \"2018-05-01 00:00\" AND 
                                           A < \"2018-05-31 00:00 \"
                                   ) tt ON 
                                     tt.Tour_ID = t.Tour_ID AND 
                                     tt.organisation = t.organisation"

dbGetQuery(conn = connection, statement = cond)

我得到的错误信息是:

代码语言:javascript
复制
Unknown column 'A' in 'having clause'

但我认为参与是没有问题的!我的语法怎么了?此外,如果我在SELECT子句中添加A,则错误消息如下:

代码语言:javascript
复制
Error in .local(conn, statement, ...) : 
could not run statement: Expression #3 of SELECT list is not in GROUP BY clause 
and contains nonaggregated column 'myTable.myTable.A' 
which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-29 14:52:16

你想要什么还不清楚。但是HAVING中的列必须位于GROUP BY或聚合的参数中。也许你想:

代码语言:javascript
复制
(SELECT organisation, Tour_ID
 FROM myTable WHERE organisation LIKE "Ikea"  
 GROUP BY organisation, Tour_ID 
 HAVING MIN(A) >= '2018-05-01' AND 
        MAX(A) < '2018-05-31'
) tt 

单引号应用于日期常量。我推测第二个常量应该是'2018-06-01',如果你想要一个五月所有日期的范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51103265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档