MySQL在WHERE语句中使用COALESCE或IFNULL选择非NULL值

时间:2017-02-23 16:13:38

标签: mysql sql tiki-wiki

我正在自行加入的表中构建摘要,以便计算某些值对应的行(在TikiWiki CMS,跟踪器应用程序中)。但我有一个案例,其中有两列可以具有相同的值,我需要SQL以特定顺序获取第一个非NULL值。

以下是我工作的表tiki_tracker_item_fields的示例:

 itemId  | fieldId  | value   
==========================
41       | 236      | Paris   
41       | 213      | Paris  
14       | 236      |         
14       | 213      | Paris  
25       | 236      | Paris     
25       | 213      |       

在查询中,我想计算所有以“Paris”为值的行,在字段Id 236或字段ID 213中。此处的结果应为:3。

有我的要求:

 SELECT COUNT(*) AS sp_actions           
FROM                                    
  `tiki_tracker_item_fields` AS actions 
WHERE                                   
  COALESCE(                             
    actions.fieldId = 236,              
    actions.fieldId = 213               
  )                                     
AND actions.value = 'Paris'                  

所以当我在第236场有'巴黎'时这是有效的,但是当我在巴黎有第213场时却没有。

我甚至不确定我是否可以这样使用COALESCE,我发现的所有例子都将COALESCE放在SELECT语句中。

然后是性能问题......

0 个答案:

没有答案