计算MySQL表中不同行的结果

计算MySQL表中不同行的结果,mysql,Mysql,我试图在MySQL表中按行计算条目: 示例数据: +------------------------------------------------+ | facebook_id | linkedin_id | twitter_id | vk_id | +------------------------------------------------+ 1234143134 0 13413993 13499 0 0

我试图在MySQL表中按行计算条目:

示例数据:

+------------------------------------------------+
| facebook_id | linkedin_id | twitter_id | vk_id |
+------------------------------------------------+
  1234143134    0             13413993     13499
  0             0             0            0
  12313431334   0             13413243     0
  12341431340   13419194319   13419943     13413
  0             0             0            0
+------------------------------------------------+
目的是显示每个_id有多少个条目。 在上面的例子中,facebook有3个,LinkedIn有1个,twitter有3个,vk有2个

以下是我尝试计算它们的次数:

COUNT(`facebook_id`) AS `facebook`,
COUNT(`linkedin_id`) AS `linkedin`,
COUNT(`twitter_id`) AS `twitter`,
COUNT(`vk_id`) AS `vkontakte`
FROM `user`
如何解决这个问题?谢谢:)

像这样使用
SUM()

select 
  sum(facebook_id <> 0) facebook, 
  sum(linkedin_id <> 0) linkedin,
  sum(twitter_id <> 0) twitter,
  sum(vk_id <> 0) vk
from `user`
像这样使用
SUM()

select 
  sum(facebook_id <> 0) facebook, 
  sum(linkedin_id <> 0) linkedin,
  sum(twitter_id <> 0) twitter,
  sum(vk_id <> 0) vk
from `user`

我们也可以编写
SUM(当facebook\u id 0然后1 ELSE 0结束时的情况)
以获得等效结果+10您的代码是满足此要求的标准方式,但由于MySql提供了此功能,我使用它。我们也可以编写
SUM(当facebook\u id 0然后1 ELSE 0结束时的情况)
为了得到一个等价的结果+10,您的代码是满足此要求的标准方法,但由于MySql提供了此功能,我使用它。
| facebook | linkedin | twitter | vk  |
| -------- | -------- | ------- | --- |
| 3        | 1        | 3       | 2   |