是否可以在单个查询中选择表 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 中的每一行元数据?的主要内容,如果未能解决你的问题,请参考以下文章