我有两张一对多的关系表。我想编写一个查询,该查询从表中输出所有记录,其中包含一条记录,而且只有一条记录具有多条记录。
因此,具有许多记录的表首先显示最多发生的记录。如果出现相同的情况,那么它将按升序排序并显示第一条记录。
表1
Col1 Col2 Col3
a1 1 4
a2 2 5
a3 3 6
表2
Col1 Col4
a1 10
a1 11
a1 22
a1 11
a2 10
a2 11
a3 19
a3 22
a3 22
a3 23
查询输出:
Col1 Col2 Col3 Col4
a1 1 4 11
a2 2 5 10
a3 3 6 22
希望我说清楚。
答案 0 :(得分:1)
首先,您需要使用group by和min()来获取table2中的最小数字,然后加入table1以获取所需的列。我使用左连接,因为我假设table2中可能没有匹配,但如果table2中总有1个或更多相应记录,则可以将其更改为INNER JOIN
。
SELECT a.col1, a.col2, a.col3, b.col4
FROM table1 a
LEFT JOIN (
SELECT col1, col4 = MIN(col4)
FROM table2
GROUP BY col1
) b
ON a.col1 = b.col1