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 の 1 行目を無視する
  2. から数えます
  3. ID が 1 行の場合は無視します。

意味

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

1,2,3,4 id の 1 行目にチンメイ パンダが含まれているので、それを無視します。

Bhagirathi Panda は 5 回発生しましたが、id 5 は行が 1 つしかないため、カウントは 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 に答える