mysql - 从连接表中选择单行
问题描述
我有两个表,Person
和Address
,如下图:
人
地址
使用这些表,我想为Person
表中的每个人创建一个视图,但只需要提取最近的地址(即 max address_id),如下所示(例如,Jane 的地址应设置为'视图中的 20 Main St'):
使用下面的脚本,表格似乎按预期加入,但我在地址字段中看不到任何值。我尝试了同一脚本的几种不同变体,但此时我几乎在旋转我的轮子。
任何提示将不胜感激!
SELECT
p.person_id AS id,
p.first_name AS first_name,
p.last_name AS last_name,
a.address AS address
FROM Person p
LEFT JOIN Address a ON
a.address_id = (
SELECT MAX(address_id)
FROM Address
WHERE p.person_id = a.person_id
)
解决方案
我已经测试了这个查询,它满足你的需要。
select p.id, p.name, a.address
from person p
left join address a
on p.id = a.person_id
and a.id = (select max(id) from address where person_id = p.id)
;
推荐阅读
- javascript - 尝试在 Vuejs 中切换下拉子菜单时出现问题?
- python - 在自定义 scikit-learn BaseSearchCV 上传播 cv_results_ 和 best_params_
- pine-script - Pine script tradingview 最高交易量值,列百分比
- drawing - 如何使用描边路径“锐化”图像中路径的边缘?
- c - 使用 C 的递归函数中的按位运算
- node.js - 将 MQTT 消息从不同账户的 Lambda 发布到 AWS IoT Core
- php - 仅更改特定类别的 Woocommerce 销售文本
- android-studio - 如何删除:androidstudio 中的 _checker_version 1"
- java - 是否所有要在 java 程序中运行的代码都需要在 public static void main(String[] args) 中?
- javascript - console.log 在烧瓶中使用 javasript