如何编写三表关联SQL查询?从main_table获取指定条件数据
三张表关联查询实现方案
要实现通过table_1关联,获取main_table中满足table_2.necessary_column为指定值的数据,本质就是在两表关联的基础上,再加入第三张表的关联条件即可,核心是利用表之间的外键关系逐步关联。
方法一:使用INNER JOIN关联三张表
这是最常用的写法,逻辑清晰,适合大部分场景:
SELECT main_table.* -- 按需指定要查询的列,比如main_table.column1, main_table.column2等 FROM main_table INNER JOIN table_1 ON main_table.id = table_1.main_table_id INNER JOIN table_2 ON table_1.id = table_2.table_1_id WHERE table_2.necessary_column = '你的指定值'; -- 替换成实际需要的值
方法二:使用子查询嵌套
如果你更习惯子查询的写法,也可以先筛选出符合条件的table_1记录,再关联main_table:
SELECT main_table.* FROM main_table INNER JOIN ( SELECT table_1.main_table_id FROM table_1 INNER JOIN table_2 ON table_1.id = table_2.table_1_id WHERE table_2.necessary_column = '你的指定值' ) AS filtered_table1 ON main_table.id = filtered_table1.main_table_id;
补充说明
INNER JOIN会只返回三张表中关联匹配且满足筛选条件的记录,如果需要保留main_table中无匹配的记录,可以改用LEFT JOIN(此时需将筛选条件移至ON子句中,避免逻辑变成INNER JOIN)。- 若
necessary_column是数值类型,去掉值的引号即可。
内容的提问来源于stack exchange,提问作者sashx
相关产品推荐
相关产品推荐

