如何查询pivot表accounts_has_devices及关联devices表的全部数据
多表关联查询方案
完全可以实现,核心是通过中间关联表accounts_has_devices的device_id字段与devices表的主键id做关联查询即可。
基础查询示例(同时返回中间表关联数据+设备数据)
SELECT ad.account_id, ad.device_id, ad.status, ad.is_master, d.id AS device_id, d.name AS device_name, d.info AS device_info FROM accounts_has_devices ad INNER JOIN devices d ON ad.device_id = d.id;
- 以上语句给两张表设置了别名简化写法,查询结果会同时包含账号设备的关联状态、是否为主设备等关联信息,以及设备本身的名称、详情等固有数据。
- *如果需要过滤特定账号的关联数据,在SQL末尾添加
WHERE ad.account_id = 目标账号ID即可。
拓展查询(同时返回账号信息+关联数据+设备数据)
如果需要同时获取账号的相关字段,可再加一层关联:
SELECT a.id AS account_id, a.account, ad.status, ad.is_master, d.name AS device_name, d.info AS device_info FROM accounts_has_devices ad INNER JOIN accounts a ON ad.account_id = a.id INNER JOIN devices d ON ad.device_id = d.id;
关联类型选择说明
- 用
INNER JOIN:仅返回同时存在关联关系、且对应账号/设备真实存在的记录,过滤无效关联数据 - 用
LEFT JOIN替换INNER JOIN:返回中间表的所有记录,即使对应账号/设备不存在时,相关字段会返回NULL,适合需要保留完整关联记录的场景
内容的提问来源于stack exchange,提问作者Exejutables
相关产品推荐
相关产品推荐

