2

我的表有这样的数据

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

我正在尝试这个

  1. 忽略每个id的第一行
  2. 计数从
  3. 如果 id 有一行,则忽略。

方法

Count     from
4         595|Bhagirathi Panda|bhagirathi
2         532|Narendra Mallik|narendram
2         13|Hemendra Singh|hemendras

在 1,2,3,4 id 第一行包含 chinmay 熊猫。所以我忽略了那个

Bhagirathi Panda 出现了 5 次,但 id 5 只有一行,所以计数为 4。其他人类似

我试过但找不到结果

请帮我写查询

(我不知道标题应该是什么,所以我写了这个。)

提前致谢。

4

2 回答 2

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 |”开头的那些。

于 2012-12-21T14:45:04.980 回答
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

SQL 小提琴演示

于 2012-12-21T15:26:02.747 回答