以列为单位计数的MySQL查询

以列为单位计数的MySQL查询,mysql,count,Mysql,Count,我有两个表l&C,它们通过两个字段l.mID和C.mID链接。C表包含三种类型的记录cs、ls和vs。在我的查询中,我需要从l中选择所有记录,作为查询的一部分,有三列显示cs、ls和vs的总计 到目前为止,我使用的是外部联接: SELECT l.*, COUNT(*) FROM l LEFT OUTER JOIN c ON c.mID = l.mID WHERE l.mID = 2 但这只是在一列后面加上一个完整的总数。任何帮助都将非常感谢。您可以在计数中使用CASE语句: select

我有两个表
l&C
,它们通过两个字段
l.mID
C.mID
链接。C表包含三种类型的记录
cs、ls和vs
。在我的查询中,我需要从l中选择所有记录,作为查询的一部分,有三列显示
cs、ls和vs的总计

到目前为止,我使用的是外部联接:

SELECT l.*, COUNT(*) FROM l LEFT OUTER JOIN c ON c.mID = l.mID WHERE l.mID = 2

但这只是在一列后面加上一个完整的总数。任何帮助都将非常感谢。

您可以在计数中使用
CASE
语句:

select
  l.*
  ,COUNT(CASE WHEN c.type = 'cs' then 1 END) as cscount
  ,COUNT(CASE WHEN c.type = 'ls' then 1 END) as lscount
  ,COUNT(CASE WHEN c.type = 'vs' then 1 END) as vscount
from l
left outer join c on c.mID = l.mID
where l.mID = 2

你所说的总计是指
SUM()
对于这些列中的每一列?在这种情况下,显示表的样本数据和解释您试图进行的聚合可能会很有用。请提供样本数据和所需的输出。根据下面的juergen,这是我想要实现的,但是我得到了多个重复的值5是否有任何原因?谢谢buddy真的很有帮助,是我问题的一个很好的解决方案:)谢谢你,但是它似乎使值成倍增加,即5变成25,你有什么想法吗?我在l表中有重复的行,因为它是一个视图
select
  l.*
  ,sum(c.type = 'cs') as cscount
  ,sum(c.type = 'ls') as lscount
  ,sum(c.type = 'vs') as vscount
from l
left outer join c on c.mID = l.mID
where l.mID = 2