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

MySQL嵌套SQL查询:关联orderbook表easy_order为1的execution行

嵌套SQL查询方案:筛选关联订单满足条件的execution记录

没问题,我来帮你搞定这个需求。根据你的表结构,我们需要从execution表中筛选出那些买订单或者卖订单对应的orderbook行中easy_order字段为1的记录。下面是两种符合要求的嵌套SQL写法:

方案一:使用EXISTS子查询(推荐)

这种写法利用MySQL的半连接特性,执行效率更高,适合数据量较大的场景:

SELECT e.*
FROM execution e
WHERE EXISTS (
    -- 检查当前execution的买订单是否满足easy_order=1
    SELECT 1
    FROM orderbook ob
    WHERE ob.id = e.buy_order_id
      AND ob.easy_order = 1
)
OR EXISTS (
    -- 检查当前execution的卖订单是否满足easy_order=1
    SELECT 1
    FROM orderbook ob
    WHERE ob.id = e.sell_order_id
      AND ob.easy_order = 1
);

为什么推荐这个写法?

  • EXISTS是半连接查询,MySQL在子查询中找到第一条匹配的记录后就会停止遍历,不用扫描整个子查询结果集
  • 只要orderbook表的id主键上有索引(主键默认自带索引),这个查询的性能会非常好

方案二:使用IN子查询(写法更简洁)

如果你更看重代码的简洁性,也可以用IN子查询实现同样的效果:

SELECT e.*
FROM execution e
WHERE e.buy_order_id IN (
    SELECT id FROM orderbook WHERE easy_order = 1
)
OR e.sell_order_id IN (
    SELECT id FROM orderbook WHERE easy_order = 1
);

注意事项

  • 当orderbook表中满足easy_order=1的记录数量很多时,IN子查询可能会先把所有符合条件的id加载到内存中再做匹配,性能略逊于EXISTS
  • 确保execution表的buy_order_id和sell_order_id字段上也建立了索引,能进一步提升查询速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:25:10