SQL中如何将两条分步执行的查询合并为单条查询语句
SQL合并查询实现方案
完全可以将两条分步SQL合并为单条查询,不需要手动传递中间查询到的product_id值,以下是两种可行的实现写法:
写法1:INNER JOIN 关联查询(推荐)
通过内连接直接关联两张表匹配对应数据,执行效率更高,也支持灵活选取两张表的所需字段:
SELECT sep.* FROM `shopify_export_product_ids` sep INNER JOIN `products` p ON sep.product_id = p.product_id WHERE p.sku = 'a-12AB';
如果需要同时返回商品SKU、商品名称等products表内的字段,直接修改SELECT后的字段列表即可,例如写为SELECT sep.*, p.sku, p.product_name就能同时拿到两张表的匹配数据。
写法2:子查询 写法
逻辑和你原本分步执行的逻辑完全对齐,先从products表查出对应SKU的product_id,再匹配第二张表的数据:
SELECT * FROM `shopify_export_product_ids` WHERE product_id IN ( SELECT product_id FROM `products` WHERE sku = 'a-12AB' );
注意事项
- 如果
products表中存在多个sku为"a-12AB"的记录,两种写法都会自动匹配所有对应product_id的shopify导出数据,和你分步批量查询的返回结果一致 - 如果对应SKU在
products表中不存在,查询会直接返回空结果,不会出现数据错配问题 - 建议给
products.sku、shopify_export_product_ids.product_id字段分别建立索引,能大幅提升这类查询的执行速度
内容的提问来源于stack exchange,提问作者code-8
相关产品推荐
相关产品推荐

