mysql - 使用 R 在 mySQL 查询中发布增量日期字段

标签 mysql r dbi r-package rmysql

我正在尝试使用 DBI R 包查询 mySQL 数据库中的表。但是,我需要通过每月更改日期字段并将其限制为 1 来从表中提取字段。

我在循环和 SQL 查询文本方面遇到问题。我想创建一个循环来更改日期(每月),然后将其打印到数据库查询,然后数据库查询将提取与每月条件匹配的所有数据。

这是我到目前为止的代码:

for (i in seq(0,12,1)){
 results <- dbGetQuery(myDB, paste("SELECT * FROM cost_and_price_period WHERE start_date <=", '01-[[i]]-2019'))
}

主要问题是 R 不承认像++ 这样的后自增运算符,所以我知道我可以只进行 12 个单独的查询,然后对它们进行 rbind,但我更愿意做一个高效的查询。有人有什么想法吗?

最佳答案

下面的解决方案可以让您了解如何继续解决您的问题。

虚拟表

   id names        dob
1   1    aa 2018-01-01
2   2    bb 2018-02-01
3   3    cc 2018-03-01
4   4    dd 2018-04-01
5   5    ee 2018-05-01
6   6    ff 2018-06-01
7   7    gg 2018-07-01
8   8    hh 2018-08-01
9   9    ii 2018-09-01
10 10    jj 2018-10-01
11 11    kk 2018-11-01
12 12    ll 2018-12-01
13 13    ll 2018-12-01

假设我们在 MySQL 中有上面的表。然后我们需要访问每月第一天的数据并将整个记录存储为数据框。

### Using for loop like from your question
n <- 12
df <- vector("list", n)

for (i in seq(1:12)){
 df[[i]] <- data.frame(dbGetQuery(pool, paste0("SELECT * FROM dummyTable WHERE dob = '2018-",i,"-01';" ))) # in iteration `i` corresponds for month number
}

df <- do.call(rbind, df)
### Using lapply(preferred way)
n <- seq(1:12)
df <- lapply(n, function(x){
  dbGetQuery(pool, paste0("SELECT * FROM dummyTable WHERE dob = '2018-",x,"-01';" ))
  })
df <- do.call(rbind, df)

因此 df 数据框的输出将给出来自 MySQL 的匹配记录。

关于mysql - 使用 R 在 mySQL 查询中发布增量日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52723270/

相关文章:

r - 如何使用rpart中的所有功能?

facebook - 使用 R 更新 Facebook 状态?

mysql - Perl DBI - 并行事务

python - 在 Python 中显示 SQLite 数据库中的表

r - 如何使用R转换列中的行

php - 使用 PDO 的准备语句获取数据库记录

perl - 解释 Perl DBI MySQL column_info()

mysql - 使用utf8从perl脚本访问latin1 mysql数据库

MySQL 到 iOS 应用程序 (Xcode 5)

php - 使用带绑定(bind)的 PHP 准备语句显示来自 mySQL 的行