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

如何通过SQL Join查询获取指定字段组合的目标数据

正确SQL查询实现两组特定组合数据获取

方案一:使用OR分组条件(显式逻辑分支)

SELECT 
    a.port_code,
    a.ata_berth_stamp,
    a.atd_berth_stamp,
    a.ata_end_sea_stamp,
    a.atd_start_sea_stamp,
    b.pic_uid,
    a.updt_stamp
FROM
    pcc_app_own.voy_port_call a
JOIN pcc_app_own.voy b ON a.voy_uid = b.voy_uid
WHERE 
    a.del_flg = 'N'
    AND (
        (b.voy_name = 'GRACIOUS ACE 0077A' AND a.port_code = 'ABC')
        OR 
        (b.voy_name = 'ADRIA ACE 0045A' AND a.port_code = 'DEF')
    )

方案二:使用IN匹配组合条件(简洁写法)

SELECT 
    a.port_code,
    a.ata_berth_stamp,
    a.atd_berth_stamp,
    a.ata_end_sea_stamp,
    a.atd_start_sea_stamp,
    b.pic_uid,
    a.updt_stamp
FROM
    pcc_app_own.voy_port_call a
JOIN pcc_app_own.voy b ON a.voy_uid = b.voy_uid
WHERE 
    a.del_flg = 'N'
    AND (b.voy_name, a.port_code) IN (
        ('GRACIOUS ACE 0077A', 'ABC'),
        ('ADRIA ACE 0045A', 'DEF')
    )

错误原因说明

你之前的第二个查询逻辑矛盾:用AND同时要求同一行的b.voy_name等于两个不同值、a.port_code等于两个不同值,这在单一行数据中不可能实现,导致查询逻辑失效。正确的做法是将两组独立的匹配条件用OR分隔,并用括号确保每组条件内部的AND优先级高于OR,避免逻辑混乱。

另外,建议使用显式JOIN语法替代隐式的逗号分隔表写法,提升代码可读性与逻辑清晰度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:23:12