我使用基于 R 编程语言和环境的实用程序,它允许我编写和执行 SQL 查询。这些查询(与我以外的其他人编写的一些“R”脚本结合使用)通过 ODBC 连接从数据库中提取数据并将结果保存在 .csv 文件中。我不是 100% 确定,但我相信支持这些查询的底层“R”库是 RMySQL 或 RSQLite,因为这两个库都加载在可编辑的“R”脚本中,我将其输入到“R”引擎中。
我熟悉在 Microsoft SQL Server 和 Microsoft Access 等其他环境中编写 SQL 查询。在这些环境中,我能够创建所谓的“嵌套”或“多步”查询,在其中创建一个“第一步”查询,该查询从一个表中获取并汇总一些数据,然后创建另一个“第二步”将“第一步”查询的结果与另一个表连接起来的查询。例如,假设我的“第一步”查询如下所示...
SELECT Table1.GroupField, Count(Table1.CountField) FROM Tabel1 GROUP BY Table1.GroupField
如果我可以将上述查询的结果称为“StepOneResults”,我想在此基础上进行如下构建...
SELECT StepOneResults.GroupField, Table2.SomeOtherField FROM StepOneResults LEFT JOIN Table2 ON Table2.GroupField = StepOneResults.GroupField
我面临的挑战是,在我工作的 R / MySQL 环境中,我似乎无法创建这样的“多步”查询。我想知道这里是否有人可以建议我如何能够在一个声明中完成这样的事情。
如有任何建议,我们将不胜感激。
提前致谢, 保罗
CTE(公共表表达式),也许?
with StepOneResults as (
SELECT Table1.GroupField, Count(Table1.CountField)
FROM Tabel1
GROUP BY Table1.GroupField
)
SELECT StepOneResults.GroupField, Table2.SomeOtherField
FROM StepOneResults
LEFT JOIN Table2 ON Table2.GroupField = StepOneResults.GroupField