如何使用PHP通过ID匹配从另一张关联表中获取对应数据
实现方案
直接通过SQL的关联查询即可完成ID匹配取数的需求,两种常用实现方式如下:
方式1:INNER JOIN关联查询(更推荐,可灵活扩展返回两张表的字段)
SELECT t1.name, t1.lastname FROM Table_2 t2 INNER JOIN Table_1 t1 ON t2.table1_id = t1.Id;
逻辑说明:
- 语句中
t2是Table_2的别名,t1是Table_1的别名,用于简化代码 - INNER JOIN会过滤掉两张表中没有匹配关系的记录,仅返回Table_2的
table1_id和Table_1的Id相等的对应数据 - 若需要同时返回Table_2的字段,只需在SELECT后追加对应字段即可,示例:
SELECT t2.Id AS table2_id, t1.name, t1.lastname
方式2:子查询实现(适合仅需返回Table_1字段的场景)
SELECT name, lastname FROM Table_1 WHERE Id IN ( SELECT table1_id FROM Table_2 );
逻辑说明:
- 先执行内层子查询,取出Table_2中所有的
table1_id值集合 - 再到Table_1中筛选
Id属于上述集合的记录,返回对应的name和lastname字段
额外说明
如果Table_2中存在多条记录对应同一个Table_1的Id,只需要返回不重复的姓名信息,可以在查询字段前加DISTINCT去重,示例:
SELECT DISTINCT t1.name, t1.lastname FROM Table_2 t2 INNER JOIN Table_1 t1 ON t2.table1_id = t1.Id;
内容的提问来源于stack exchange,提问作者elle
相关产品推荐
相关产品推荐

