以列为单位计数的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