You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server关联主从表查询所有商品是否存在订单的高效写法

最高效的实现SQL如下

SELECT 
    p.Id,
    IIF(EXISTS(SELECT 1 FROM [Order] o WHERE o.Id = p.Id), 1, 0) AS Has_Order
FROM Product p

方案说明

  • 采用EXISTS半连接实现,比LEFT JOIN后再去重/分组的性能更高:半连接匹配到第一条符合条件的订单记录就会终止扫描,不需要处理所有匹配的订单行,也不需要额外的去重运算,订单表数据量越大性能优势越明显。
  • 由于Order是SQL Server内置保留关键字,因此查询时需要用方括号[]包裹表名避免语法报错。
  • 如果使用的是SQL Server 2012之前的版本,可以把IIF替换为CASE WHEN逻辑,效果完全一致:
SELECT 
    p.Id,
    CASE WHEN EXISTS(SELECT 1 FROM [Order] o WHERE o.Id = p.Id) THEN 1 ELSE 0 END AS Has_Order
FROM Product p

内容的提问来源于stack exchange,提问作者developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 08:15:02