有两个 SQL 表:
Parents:
+--+---------+
|id| text |
+--+---------+
| 1| Blah |
| 2| Blah2 |
| 3| Blah3 |
+--+---------+
Childs
+--+------+-------+
|id|parent|feature|
+--+------+-------+
| 1| 1 | 123 |
| 2| 1 | 35 |
| 3| 2 | 15 |
+--+------+-------+
我想用单个查询从父母表中选择每一行,并为孩子表中的每一行选择关系“父”-“id”值和最大“特征”列值。在此示例中,结果应为:
+----+------+----+--------+---------+
|p.id|p.text|c.id|c.parent|c.feature|
+----+------+----+--------+---------+
| 1 | Blah | 1 | 1 | 123 |
| 2 | Blah2| 3 | 2 | 15 |
| 3 | Blah3|null| null | null |
+----+------+----+--------+---------+
其中 p = 父表和 c = 子表
我尝试 LEFT OUTER JOIN 和 GROUP BY 但 MSSQL Express 告诉我使用 GROUP BY 的查询需要在每个非分组字段上使用聚合函数。而且我不想将它们全部分组,而是选择顶行(使用自定义排序)。
我完全没有想法......