是否可以在单个查询中选择表 1 中的所有行和表 2 中的每一行元数据?

Posted

技术标签:

【中文标题】是否可以在单个查询中选择表 1 中的所有行和表 2 中的每一行元数据?【英文标题】:Is it possible to select all rows from table 1 and each row meta data from table 2 in a single query? 【发布时间】:2018-06-07 15:19:36 【问题描述】:

我正在构建一个小型 CRM,我想知道是否有一种方法可以将表 1 中的所有行以及表 2 中的每一行的元数据都带入相同的结果中,比如说tasks t2

现在我正在使用 2 个查询,一个从 t1 获取所有行,然后在循环中选择 t2 中的所有行,如果 t1_id 上存在匹配项,我将数据推送到现有数组。

t1
-------------------
id
number
created_at
updated_at


t2
-------------------
id
t1_id
something
created_at
updated_at

【问题讨论】:

使用连接和有序查询从表中获取所有数据,并在您的应用程序代码中转换您的数据集 【参考方案1】:

这可能会解决你的问题:

SELECT *  
FROM t1 
LEFT JOIN t2 ON t1.id = t2.t1_id 

【讨论】:

这里order by t1.id很重要【参考方案2】:

我认为最好是使用 group_concat 但还有其他方法:

 SELECT t1.id,
  t1.number,
  t1.created_at,
  t1.updated_at
  GROUP_CONCAT(DISCTINCT t2.something) as meta
 FROM t1
 LEFT JOIN t2 on t1.id = t2.t1_id
 GROUP BY t1.id,
  t1.number,
  t1.created_at,
  t1.updated_at

【讨论】:

以上是关于是否可以在单个查询中选择表 1 中的所有行和表 2 中的每一行元数据?的主要内容,如果未能解决你的问题,请参考以下文章

在 Graphcool 中查看我的数据的行和表?

单个查询中的 Postgresql 多个连接,其中连接的外键不存在于所有表中

查找存在于两个不同表中的单个行

能够加入 MySQL 的行和表的合理数量是多少?

SQL语句:子查询

如何查询 BigQuery 视图和表的依赖关系?