gpt4 book ai didi

MySQL:在 GROUP BY 上仅选择符合特定条件的一行

转载 作者:行者123 更新时间:2023-12-01 00:40:00 25 4
gpt4 key购买 nike

我有一个包含文档的表格,其中每个文档都有一个 doc_id 但在相同的 date 上我可能有相同的 case_id两种不同的语言版本

doc_id      case_id     date        lang
001-89259 1012/02 2008-11-04 FRA
001-144945 10122/04 2014-06-19 ENG
001-57558 10126/82 1988-06-21 ENG
001-62116 10126/82 1988-06-21 FRA
001-91708 10129/04 2009-03-10 FRA
001-116955 10131/11 2013-03-07 FRA
001-102676 10143/07 2011-01-11 FRA
001-104520 10145/07 2011-04-12 FRA
001-72756 10162/02 2006-03-09 FRA
001-72757 10162/02 2006-03-09 ENG
001-82198 10163/02 2007-09-06 ENG
001-57555 10208/82 1988-05-26 ENG
001-62113 10208/82 1988-05-26 FRA

我想做的是根据 case_iddate 选择英语版本(如果可用),否则保留法语版本。我的输出将如下所示:

doc_id      case_id     date        lang
001-89259 1012/02 2008-11-04 FRA
001-144945 10122/04 2014-06-19 ENG
001-57558 10126/82 1988-06-21 ENG -- keep only the english version
001-91708 10129/04 2009-03-10 FRA
001-116955 10131/11 2013-03-07 FRA
001-102676 10143/07 2011-01-11 FRA
001-104520 10145/07 2011-04-12 FRA
001-72757 10162/02 2006-03-09 ENG -- keep only the english version
001-82198 10163/02 2007-09-06 ENG
001-57555 10208/82 1988-05-26 ENG -- keep only the english version

我如何使用 MySQL 做到这一点?

更新:

<删除>所有答案都给出了正确的结果,但我将 Görkem 标记为正确,因为 IMO 是最优雅和最直接的,因为它的工作原理。

我最初接受了 Görkem 的回答,但由于某种原因它返回了 Strawberry 指出的错误结果。这使得 Strawberry 的答案成为最优雅和最正确的答案

最佳答案

SELECT DISTINCT COALESCE(e.doc_id,f.doc_id) doc_id
, f.case_id
, f.date
, COALESCE(e.lang,f.lang) lang
FROM my_table f
LEFT
JOIN my_table e
ON e.case_id = f.case_id
AND e.date = f.date
AND e.lang = 'ENG';

关于MySQL:在 GROUP BY 上仅选择符合特定条件的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34896964/

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