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

如何批量查询ORDERS表中不存在的po_number?

批量查找不存在于ORDERS表中的PO编号

方法1:通过VALUES构造临时数据集+LEFT JOIN

直接把所有待检查的PO编号构造为虚拟表,和ORDERS表左连接后筛选无匹配的记录:

SELECT po.po_number, 'DNE' AS status
FROM (
    VALUES 
        ('870043334'),
        ('871280502'),
        ('871414230')
) AS po(po_number)
LEFT JOIN orders o ON o.po_number = po.po_number
WHERE o.po_number IS NULL;

方法2:通过VALUES+NOT EXISTS子查询

逻辑和你原有的IF EXISTS一致,但实现批量处理:

SELECT po.po_number, 'DNE' AS status
FROM (
    VALUES 
        ('870043334'),
        ('871280502'),
        ('871414230')
) AS po(po_number)
WHERE NOT EXISTS (
    SELECT 1 
    FROM orders o 
    WHERE o.po_number = po.po_number
      AND o.po_number IS NOT NULL
);

方法3:用临时表处理大量PO

如果待检查的PO数量较多,先将PO导入临时表再查询更便捷:

-- 创建临时表(字段类型需与ORDERS表的po_number一致)
CREATE TABLE #TempPOs (po_number VARCHAR(20));

-- 插入所有待检查的PO
INSERT INTO #TempPOs (po_number)
VALUES 
    ('870043334'),
    ('871280502'),
    ('871414230');

-- 筛选不存在的PO
SELECT t.po_number, 'DNE' AS status
FROM #TempPOs t
LEFT JOIN orders o ON o.po_number = t.po_number
WHERE o.po_number IS NULL;

-- 清理临时表
DROP TABLE #TempPOs;

以上方法都能一次性返回所有不存在的PO记录,无需逐个编写判断语句,执行效率也优于批量单条查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:06:12