0
我正在自我连接的表中创建摘要,以便对特定值(在TikiWiki CMS,跟踪器应用程序)中对应的行进行计数。但是我有一个情况,其中有两列可以具有相同的值,并且我需要SQL以特定顺序获取第一个非NULL值。MySQL在WHERE语句中使用COALESCE或IFNULL选择非NULL值
下面是表tiki_tracker_item_fields
在我工作的一个例子:在字段Id 236或ID字段213
itemId | fieldId | value
==========================
41 | 236 | Paris
41 | 213 | Paris
14 | 236 |
14 | 213 | Paris
25 | 236 | Paris
25 | 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,而不是当我有巴黎21场3.
而且我甚至不确定我可以使用COALESCE这种方式,我发现所有示例都将SELECT语句中的COALESCE。
再就是性能问题...
太好了!像魅力一样工作,速度很快。谢谢!现在我必须围绕你的例子来理解它是如何工作的,特别是'THEN itemId END'部分。 –
另外我想知道是否有可能/建议在WHERE语句中使用控制流功能... –