gpt4 book ai didi

SQL 查询如果 X 但不是 Y,则返回表中的所有内容

转载 作者:行者123 更新时间:2023-12-02 19:36:07 24 4
gpt4 key购买 nike

我有一个包含订单详细信息的 SQL 表。

表格示例

order_id | item_type | stock_code | price_code
----------------------------------------------
1 | S | 0005-01 | NULL
1 | P | NULL | PRC-1
1 | S | 0004 | NULL
2 | S | 0005-02 | NULL
2 | S | 0004 | NULL

我正在尝试返回订单包含以 0005 开头的股票代码但不包含以 PRC 开头的价格代码的所有 order_id

我的尝试

SELECT order_id
FROM order_detail as ordDetail
WHERE EXISTS(
SELECT *
FROM order_detail as ordDetail2
WHERE ordDetail2.order_id = ordDetail.order_id
AND stock_code LIKE '0005-%'
AND price_code NOT LIKE 'PRC%'
)

出于某种原因,它似乎忽略了 Price_code NOT LIKE 参数?

预期结果

order_id
--------
2
2

I'd love the order_id's to be unique too if that were possible :/

最佳答案

我们可以以您的尝试为基础:

SELECT od.order_id
FROM order_detail od
WHERE od.stock_code LIKE '0005-%' AND
NOT EXISTS (SELECT 1
FROM ORD_DETAIL od2
WHERE od2.order_id = od.order_id AND
od2.price_code LIKE 'PRC%'
);

具体变化是:

  • stock_code 的条件位于外部查询中,而不是子查询中。
  • 价格代码的条件是 NOT EXISTS 而不是 EXISTS - 订单不应有这样的行。
  • 子查询中的条件是LIKE而不是NOT LIKE

关于SQL 查询如果 X 但不是 Y,则返回表中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58449593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com