我正在使用 RMySQL 运行一个连接到 AWS MySQL 数据库的查询,但我收到以下与使用 CTE 语句相关的错误:
Error in .local(conn, statement, ...) :
could not run statement: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE db.table
WITH CTE_1 AS (
SELECT variable
' at line 3
我知道 MySQL v8.0+ 支持 CTE 语句,但是 AWS DB 是 v8.0.32 以及我系统中安装的那个。我正在使用 R 4.2.2 和 Rstudio 2022.12.0.
当我从 MySQL Workbench 运行查询时,它工作得很好,只有在使用 R 时才会出现错误(我已经尝试过 RMySQL 和 RMaridaBD)。
任何想法可能是什么问题?
赞赏!
编辑:
下面是SQL语句的例子:
CREATE TABLE dbname.census_summary
WITH CTE_census AS (
SELECT state
,SUM(population) population
,SUM(CASE WHEN sex = "Male" THEN population ELSE 0 END) male_pop
,SUM(CASE WHEN sex = "Female" THEN population ELSE 0 END) female_pop
FROM dbname.census_data
GROUP BY state
),
CTE_covid AS (
SELECT state
,SUM(confirmed_cases) covid_cases
,SUM(deaths) covid_deaths
FROM dbname.covid_data
GROUP BY state
)
SELECT *
FROM CTE_census AS a
LEFT JOIN CTE_covid AS b
ON a.state = b.state
这就是我尝试在 R 中执行查询的方式:
library(RMySQL)
library(DBI)
library(readr)
con <- RMySQL::dbConnect(RMySQL::MySQL(),
host = "hostname",
user = "username",
password = "pass",
dbname = "dbname",
port = 3306)
query_exec <- dbGetQuery(con, statement = read_file('sql_file.sql'))