基本上我有一个一对多的表。我想将较大表的列附加到较小表的结果集中。我最终会得到一个与小表相同大小的结果集,但同样,它会包含来自多面表的相关信息。
一个问题:多面表没有定义主键,尽管可以建立一个复合键(同样它不是约束)。
基本上我有一个一对多的表。我想将较大表的列附加到较小表的结果集中。我最终会得到一个与小表相同大小的结果集,但同样,它会包含来自多面表的相关信息。
一个问题:多面表没有定义主键,尽管可以建立一个复合键(同样它不是约束)。
由于多个记录 int_large
可能对应于一个记录 in t_small
,因此您需要选择您想要从中挑选的确切内容t_large
。
这意味着您要么需要从t_large
(如何?)聚合所有相应的记录,要么从许多记录中选择一条记录(哪个?)。
SELECT s.*, SUM(l.value)
FROM t_small s
LEFT JOIN
t_large l
ON s.id = l.small
或者
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
您能否发布您希望作为查询结果看到的结果集?
这不只是键上的左连接吗?
select * from small_table s left join large_table l on s.id = l.small_table_id
small_table 中的每条记录,但只有 large_table 中的相关行。
我错过了一些东西。请详细说明或提供经过清理的样本数据。