gpt4 book ai didi

mysql - 根据案例结果向 where 添加另一个条件

转载 作者:行者123 更新时间:2023-11-29 03:23:05 25 4
gpt4 key购买 nike

所以我一直在想如何解决这个问题,但我还想不出来。我有一个表“A”,其中包含 3 个字段“id”、“来源”和“描述”,来源可以重复,但每个来源的描述必须是唯一的,我想做的是,如果描述有键“PT”,并且是唯一与其原始键关联的行,那么它不能显示在结果集中,否则必须与其他描述字段一起显示。

select * from a
where 1 = 1
and case when (select count(*) from a where 1 = 1 group by origin) > 1
then description != 'PT' else 1 = 1 end

例如,我有 5 个键用于原点 O1、O2、O3、O4、O5。 O1 关联了两个描述 AC 和 PT,而 O2 只关联了一个描述,即PT,在这种情况下,结果集中只会显示两行,它们属于 O1 键,因为 O2 只有一个键。

这是我迄今为止尝试过的方法,但它不会按照我想要的方式工作,所以我想知道你是否可以指出实现这一目标的方向。

我尝试使用 sqlfiddle 但不知何故不起作用,这是我用来创建和填充表的方法。

CREATE TABLE A
(`id` int, `origin` varchar(7), `description` varchar(255))
;

INSERT INTO A
(`id`, `origin`, `description`)
VALUES
(1, 'O1', 'AC'),
(2, 'O1', 'PT'),
(3, 'O2', 'PT'),
(3, 'O3', 'MI'),
(3, 'O3', 'PT'),
(3, 'O4', 'EG'),
(3, 'O4', 'PT'),
(3, 'O5', 'PT')
;

最佳答案

如果我没理解错的话,一个简单的嵌入式查询就可以了。

您似乎在寻找包含原始值但没有 PT 描述的行?

查询:

SELECT *
FROM A
WHERE origin IN (SELECT origin FROM A WHERE description != 'PT')

输出:

+------+--------+-------------+
| id | origin | description |
+------+--------+-------------+
| 1 | O1 | AC |
| 2 | O1 | PT |
| 3 | O3 | MI |
| 3 | O3 | PT |
| 3 | O4 | EG |
| 3 | O4 | PT |
+------+--------+-------------+

关于mysql - 根据案例结果向 where 添加另一个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40748961/

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