gpt4 book ai didi

MySQL IF IN GROUP_CONCAT 中断

转载 作者:可可西里 更新时间:2023-11-01 07:01:40 24 4
gpt4 key购买 nike

我正在执行一个相当大的 SQL,所以我很抱歉无法提供我的表的更大示例。

SELECT 
customer_id,
agreement_id,
if( 'network' IN ( GROUP_CONCAT( DISTINCT services.service_code
SEPARATOR ',' ) ),
'Yes','No') as networkservice
FROM customers
INNER JOIN agreement USING(customer_id)
INNER JOIN services USING(agreement_id)
GROUP BY customer_id

一个客户可以有一个协议(protocol),一个协议(protocol)可以有很多服务。我想知道的是“网络”是否是该协议(protocol)中的服务之一。

因为 GROUP_CONCAT 返回一个逗号分隔的列表,所以它非常适合我的情况。但我无法让它发挥作用,而且我的想法已经用完了。

如果只有一项服务且该服务是“网络”,则返回"is",但如果有多个服务,则返回“否”。

如果我改用 (INT)service_id 则没有任何区别,除非我正在寻找的 INT 在列表中排在第一位。但这仅适用于 INT,如果“网络”在列表中排在第一位,则返回否。

我试过:

if( 'network' IN ( CAST(GROUP_CONCAT( DISTINCT services.service_code
SEPARATOR ' ' ) AS CHAR) ),
'Yes','No')

if( 'network' IN ( concat('\'',
GROUP_CONCAT(DISTINCT services.service_code
SEPARATOR '\', \'' ),
'\'') ), 'Yes','No')

如果我的解释听起来令人困惑,我可以提供更多示例。

谢谢。

最佳答案

我是 group_concat super 粉丝,但在这种情况下您不需要group_concat

sum( if(services.service_code='network', 1, 0) ) as networkservice

关于MySQL IF IN GROUP_CONCAT 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7259023/

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