gpt4 book ai didi

mysql - 如何在Mysql中为GROUP BY定义自己的聚合函数?

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

我有一个 products 表,其中包含不同语言的产品名称:

product-id | lang-no | name

我想将每个产品列出一次,但使用不同的语言名称。

我没有所有产品名称的所有语言,因此有时我不得不求助于另一种语言。

选择我使用的数字最小或最大的语言

SELECT * FROM products JOIN
(SELECT product-id, MIN(lang-no) AS minlang FROM products GROUP BY product-id)
AS u ON products.product-id = u.product-id AND products.lang-no=minlang

但现在我需要定义另一个聚合函数而不是 MIN 或 MAX,因此我可以更喜欢 lang-no 3。

我如何在Mysql中定义我自己的聚合函数,例如。一些 IF 逻辑?

最佳答案

您可以将 case 与聚合一起使用来指定返回哪个值(如果存在)以及如果不存在最小值(或最大值):

select p.*
from products p
join (
select product_id,
case
when sum(lang_no = 3) > 0
then 3
else min(lang_no)
end as min_lang_no
from products
group by product_id
) p2 on p.product_id = p2.product_id
and p.lang_no = p2.min_lang_no

关于mysql - 如何在Mysql中为GROUP BY定义自己的聚合函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43828839/

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