SQL查询:筛选不存在指定城市州关联记录的Item Number的方法
符合要求的SQL查询实现
核心逻辑
筛选所有没有任何一条记录匹配城市=New York且州=NY的Item Number,仅返回去重后的Item Number结果,不会返回其他位置的关联记录。
实现方式1:使用NOT EXISTS(性能更优,适合大数据量表)
SELECT DISTINCT item_number FROM item_locations t1 WHERE NOT EXISTS ( SELECT 1 FROM item_locations t2 WHERE t2.item_number = t1.item_number AND t2.city = 'New York' AND t2.state = 'NY' );
逻辑说明:对每个Item Number,检查是否存在匹配New York, NY的记录,不存在就返回该Item Number,
DISTINCT保证结果中每个Item Number仅出现一次。
实现方式2:使用GROUP BY + HAVING(可读性更好,适合小数据量场景)
SELECT item_number FROM item_locations GROUP BY item_number HAVING SUM(CASE WHEN city = 'New York' AND state = 'NY' THEN 1 ELSE 0 END) = 0;
逻辑说明:按Item Number分组,统计每个Item Number对应New York, NY的记录数,筛选记录数为0的分组,天然去重无需额外加DISTINCT。
你可以根据自己的实际表名、城市和州字段的实际命名,调整上述SQL中的对应字段名即可直接使用。
内容的提问来源于stack exchange,提问作者Justin Rowland
相关产品推荐
相关产品推荐

