SQL多表关联技巧:首表用SELECT *全列查询,其余表选指定列
多表关联查询:获取单表全字段+其他表指定字段的SQL写法
要实现从第一个表取全字段,另外两个表取指定字段的关联查询,核心是明确指定第一个表的全字段(用表名.*),同时列出其他表的目标字段,再搭配正确的关联条件即可,不用手动枚举第一个表的所有字段。
示例场景
假设三个表分别为:
users:需要获取全部字段的主表orders:仅需order_id、order_date字段products:仅需product_name、price字段
关联逻辑:用户表与订单表通过用户ID关联,订单表与产品表通过产品ID关联。
基础SQL写法
SELECT users.*, orders.order_id, orders.order_date, products.product_name, products.price FROM users JOIN orders ON users.id = orders.user_id JOIN products ON orders.product_id = products.id;
简化写法(使用表别名)
如果表名较长,可用别名简化代码,可读性更高:
SELECT u.*, o.order_id, o.order_date, p.product_name, p.price FROM users u JOIN orders o ON u.id = o.user_id JOIN products p ON o.product_id = p.id;
注意事项
- 不能直接写
SELECT *,否则会返回所有关联表的所有字段,不符合需求;必须指定第一个表的*(如users.*)来限定仅取该表全字段 - 根据业务需求选择关联类型:如果需要保留主表中未匹配到关联数据的记录,改用
LEFT JOIN替代JOIN - 若字段名存在重复(比如多个表都有
id字段),建议给重复字段指定别名,避免结果集中字段名冲突
内容的提问来源于stack exchange,提问作者laser.p
相关产品推荐
相关产品推荐

