提问人:ambergris 提问时间:11/17/2023 更新时间:11/17/2023 访问量:38
通过 R 查询 SQL 数据库,并返回特定列表
Querying SQL database through R, and returning a specific list
问:
我必须通过 R 查询和 SQL 数据库,并且很难让它返回我需要的东西。基本上,数据库有“timeStamp”、“line”、“aggregate”、“name”、“location”和“topic”列。这是我尝试在时间范围内获取所有 UNIQUE 主题及其关联的列值的尝试:
con <- openConn()
query <- "SELECT DISTINCT topic, line, aggregate, name, location FROM doc.database
WHERE \"timeStamp"\ BETWEEN '2023-06-01 00:00:00' AND ' 2023-10-30 10:00:00'
GROUP BY topic"
topicsdf <- dbGetQuery(con, query)
但是,这会返回一个错误:
dbSendQuery(conn, statement, ...) 中的错误: 无法检索 JDBC 结果集 JDBC 错误:发送到后端时发生 I/O 错误。 陈述: SELECT DISTINCT 主题、行、聚合、名称、位置 FROM doc.database 其中“timeStamp”介于“2023-06-01 00:00:00”和“2023-10-30 10:00:00”之间
非常感谢这方面的帮助,因为我不熟悉这种类型的查询
答:
1赞
Tim Biegeleisen
11/17/2023
#1
您的查询正在对主题执行操作,即要求 SQL 数据库为每个主题值返回一条记录。但是,查询还会选择其他列,而不是在聚合函数中。因此,不清楚应返回 、 、 或 的哪些值,因此此查询会在数据库上生成错误。GROUP BY
line
aggregate
name
location
您在评论中阐明了您的要求:
也许我可以为每个主题选择所有不同的列值组合?
在这种情况下,您可以尝试简单地删除子句并执行不同的选择:GROUP BY
con <- openConn()
query <- "SELECT DISTINCT topic, line, aggregate, name, location
FROM doc.database
WHERE \"timeStamp\" BETWEEN '2023-06-01 00:00:00' AND ' 2023-10-30 10:00:00'"
topicsdf <- dbGetQuery(con, query)
下一个:将节点路径转换为列表的树结构列表
评论
dbplyr