Sql 如何将结果仅附加到较小表的一对多表联接起来?
基本上我有一张一对多的桌子。我想将较大表的列附加到较小表的结果集中。最后,我将得到一个与较小的表大小相同的结果集,但同样是来自多侧面表的相关信息Sql 如何将结果仅附加到较小表的一对多表联接起来?,sql,rdbms-agnostic,Sql,Rdbms Agnostic,基本上我有一张一对多的桌子。我想将较大表的列附加到较小表的结果集中。最后,我将得到一个与较小的表大小相同的结果集,但同样是来自多侧面表的相关信息 一个缺点:虽然可以建立复合键(同样,复合键不是约束),但多面表没有定义主键。这不是键上的左连接吗 select*from small\u table s left join large\u table l on s.id=l.small\u table\u id 小_表中的每个记录,但大_表中只有相关行 我错过了一些东西。请详细说明或提供擦洗过的样本数
一个缺点:虽然可以建立复合键(同样,复合键不是约束),但多面表没有定义主键。这不是键上的左连接吗
select*from small\u table s left join large\u table l on s.id=l.small\u table\u id
小_表中的每个记录,但大_表中只有相关行
我错过了一些东西。请详细说明或提供擦洗过的样本数据。由于
t\u large
中的多条记录可能对应于t\u small
中的一条记录,因此您需要从t\u large
中选择确切的内容
这意味着您需要从t\u large
(如何?)中聚合所有相应的记录,或者从多个记录中选择一个记录(哪个?)
或
现在,想象一下这个表格布局:
t_small
id value
-- --
1 Small 1
2 Small 2
t_large
id small_id value
-- -- --
1 1 1
2 1 4
3 2 9
4 2 16
能否发布您希望作为查询结果看到的结果集?较大的表包含关系的哪一部分:“一”部分还是“多”部分?能否发布一些示例数据和您想要获得的结果集?较大的多表将更大。。。我想做一个更关注单面表的查询,但我想从更大的细节(不久前的糟糕DB设计)中提取一些结果,而不需要像多面表那样大的结果集。在某种程度上,这有点像sql优化,但在一个更基本的层面上。我在回答中写了一个示例表布局,你能看一下并说:你想要的查询应该返回哪个结果集吗?多面表没有PK,FK(较小的单面表中的PK)在多面表中不是唯一的。。对不起,brb正在编辑。
SELECT s.*, l.*
FROM t_small s
LEFT JOIN
t_large l
ON l.id =
(
SELECT MIN(id)
FROM t_large li
WHERE li.small = s.id
)
t_small
id value
-- --
1 Small 1
2 Small 2
t_large
id small_id value
-- -- --
1 1 1
2 1 4
3 2 9
4 2 16