我的表格有这样的数据
id from
1 1|Chinmoy Panda|chinmoy|mfsi_chinmoyp
1 532|Narendra Mallik|narendram
1 595|Bhagirathi Panda|bhagirathi
2 1|Chinmoy Panda|chinmoy|mfsi_chinmoyp
2 532|Narendra Mallik|narendram
2 595|Bhagirathi Panda|bhagirathi
2 13|Hemendra Singh|hemendras
3 1|Chinmoy Panda|chinmoy|mfsi_chinmoyp
3 595|Bhagirathi Panda|bhagirathi
3 13|Hemendra Singh|hemendras
4 1|Chinmoy Panda|chinmoy|mfsi_chinmoyp
4 595|Bhagirathi Panda|bhagirathi
5 595|Bhagirathi Panda|bhagirathi
我正在尝试这个
意味着
Count from
4 595|Bhagirathi Panda|bhagirathi
2 532|Narendra Mallik|narendram
2 13|Hemendra Singh|hemendras
在1,2,3,4 id第1行包含chinmay panda。所以我忽略了那个
Bhagirathi Panda发生了5次,但是id 5只有一行,所以计数是4。 同样适用于其他人
我试过但无法找到结果
请帮我写一下查询
(我没有得到标题,所以我写这个。)
提前感谢。
答案 0 :(得分:3)
你想要一个像这样的查询:
select count(*), from
from t
where left(from, 2) <> '1|' and
t.id in (select id from t group by id having COUNT(*) > 1)
group by from
但是,由于列名称命名很差(使用SQL保留字),因此需要正确引用它们。
此外,我假设“首先”是指以“1 |”开头的那些。
答案 1 :(得分:0)
此查询将执行
SELECT
COUNT(*) `count`,
`from`
FROM (
SELECT
`from`,
IF( COALESCE( @id, 0 ) = (@id := id) , @curRow := @curRow + 1, @curRow := 1 ) curRow
FROM
Table1 ) tmp
WHERE curRow > 1
GROUP BY `from`
ORDER BY `count` desc