我做一個相當大的SQL,所以我很抱歉,不能提供我的表更大的例子。Mysql如果在GROUP_CONCAT休息
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
客戶可以有一個協議,協議可以有很多的服務。我試圖找出的是,如果「網絡」是該協議中的服務之一。
由於GROUP_CONCAT返回一個逗號分隔的列表,因此對我的情況來說感覺很完美。但我無法實現它的功能,而且我的想法已經枯竭了。
如果只有一個服務,該服務是「網絡」,它返回是的,但如果有一個以上的返回號
如果我使用(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')
我可以提供更多的例子如果我的解釋聽起來很混亂。
謝謝。
謝謝,從來沒有想過使用SUM。我像這樣使用IF(sum(if(service.service_code ='network',1,0))> 0,'是','否)作爲networkservice',它工作的很好。 – Cleric