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