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

使用INNER JOIN查询设置表满足多个匹配条件的仓库记录

这个需求完全可以在单条SQL查询中实现,不需要分两次执行查询,常见实现方案如下:

方案1:双关联查询(可读性高、性能表现好)

分别将两个设置项作为独立的关联表绑定到仓库表,各自做条件过滤:

SELECT wms.*
FROM wms
INNER JOIN wms_setting s_active 
    ON wms.wms_id = s_active.wms_wms_id
    AND s_active.name = 'active'
    AND s_active.value_int = 1
INNER JOIN wms_setting s_notify 
    ON wms.wms_id = s_notify.wms_wms_id
    AND s_notify.name = 'dispatch_notification_method'
    AND s_notify.value_str = 'pull'

只有两个关联关系都命中的仓库才会被返回,符合你的筛选要求。

方案2:聚合分组查询(适合多条件扩展)

如果后续需要扩展更多设置项校验,用聚合+HAVING的写法会更简洁:

SELECT wms.*
FROM wms
INNER JOIN wms_setting s 
    ON wms.wms_id = s.wms_wms_id
WHERE 
    (s.name = 'active' AND s.value_int = 1)
    OR 
    (s.name = 'dispatch_notification_method' AND s.value_str = 'pull')
GROUP BY wms.wms_id
HAVING COUNT(DISTINCT s.name) = 2

逻辑为先筛选出满足任意一个设置条件的行,按仓库ID分组后,统计命中的不同设置项数量刚好等于2,就说明两个条件都满足。如果你的设置表不会出现同一个仓库同一个name重复存储的情况,也可以把COUNT(DISTINCT s.name)简化为COUNT(*)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:09:00