gpt4 book ai didi

mysql - 查找具有相同ID的行并且只保留一行的方法

转载 作者:行者123 更新时间:2023-11-29 09:06:58 25 4
gpt4 key购买 nike

我有一个有效的查询,它将从我的数据库返回一些结果(记录),例如:

123|John Williams|IL|M|06/01/2011|ACTIVE
124|Mary Haque|NY|F|TERMINATED|06/30/2011
124|Mary Haque|NY|F|07/01/2011|ACTIVE
125|Alex Chan|VA|07/01/2011|ACTIVE
126|Rob Kreb|VA|TERMINATED|06/20/2011

如您所见,结果只是一个客户记录列表,而最后两个字段指示成员(member)是活跃还是已终止以及关联的活跃/终止日期。

现在的复杂性是,正如您所看到的,对于 ID 为 124 的成员(member)(Mary Haque),她有两条记录,对于这种两条记录的客户,我只想保留该成员(member)处于事件状态的行,而完全无视她终止的历史。例如,上述所需的输出应该是:

123|John Williams|IL|M|06/01/2011|ACTIVE
124|Mary Haque|NY|F|07/01/2011|ACTIVE
125|Alex Chan|VA|07/01/2011|ACTIVE
126|Rob Kreb|VA|TERMINATED|06/20/2011

如您所见,现在 Mary Haque 仅拥有有关结果的主动信息。上面的结果是由 SQL“Select”查询生成的,但我不能简单地将“WHERE status=ACTIVE”附加到此查询,因为我仍然想保留像上面的 Rob Kreb 这样只有一条记录的成员,即使他被终止。我只希望在某个成员有两条记录时过滤 TERMINATED 成员记录。

仅供引用,我当前的查询如下所示:

SELECT * FROM customer_change WHERE CUSTOMER_LOGIN NOT IN(SELECT CUSTOMER_LOGIN FROM  customer_full WHERE CUSTOMER_LOGIN IS NOT NULL)
UNION
SELECT * FROM customer_change WHERE CUSTOMER_POINTS=0 AND CUSTOMER_LOGIN NOT IN(SELECT CUSTOMER_LOGIN FROM customer_full WHERE CUSTOMER_POINTS=0 AND CUSTOMER_LOGIN IS NOT NULL)

感谢您提前提供的帮助!

最佳答案

colXcolY 是查询的最后 2 列:

SELECT *
FROM (your_UNION_query) AS p
WHERE NOT ( colX = 'TERMINATED'
AND EXISTS
( SELECT *
FROM (your_UNION_query) AS q
WHERE q.id = p.id
AND q.colY = 'ACTIVE'
)
)

关于mysql - 查找具有相同ID的行并且只保留一行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6792208/

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