我在使用 LEFT JOIN 和 GROUP BY 组合具有一对多映射的表时遇到问题。
我有下表具有唯一 ID(在说明性示例中,这是 house_number)
房屋:
|house_number| bedrooms|
|0 | 4 |
|1 | 3 |
|2 | 1 |
而且我想使用唯一 ID 与第二个表进行 LEFT JOIN,其中第二个表可能有也可能没有每个唯一 ID 的多个条目。例如,
住户:
| house_number | occupant_id | type |
| 0 | 3 | 19 |
| 0 | 1 | 20 |
| 0 | 2 | 21 |
| 2 | 7 | 20 |
现在我想要实现的是每个门牌号只有一个条目,但在 LEFT JOIN 中优先考虑类型为 20 的居住者,同时保留那些没有列出任何居住者的房屋,例如,
|house_number| bedrooms| occupant_id | type |
|0 | 4 | 1 | 20 |
|1 | 3 | null | null |
|2 | 1 | 7 | 20 |
我可以使用 GROUP BY 来实现每栋房屋只有一个条目,但是,我需要确保与其一起返回的占用行(如果存在)具有type = 20
.
如果我只使用 a WHERE (type = 20)
,那么我不会得到 house_number = 1 的返回条目。
我将如何进入决赛桌?