2
SELECT count(*), lower(name), number
FROM   tbl
GROUP  BY lower(name), number
HAVING count(*) > 1;

入力 tb1

slno name number
1    aaa   111
2    Aaa   111
3    abb   221
4    Abb   121
5    cca   131
6    cca   141
7    abc   222
8    cse   222

このクエリは、同じ番号と名前の重複を見つけることができますが、3行目と4行目で重複を見つけることはできません!!!

 SELECT count(*), lower(name)
    FROM   tbl
    GROUP  BY lower(name)
    HAVING count(lower(name)) > 1

このクエリは、名前のすべての重複を見つけることができます!!! それは完璧に動作します

 SELECT count(*), number
    FROM   tbl
    GROUP  BY number
    HAVING count(number) > 1

このクエリは、番号内のすべての重複を見つけることができます!!! それは完璧に動作します

名前が小文字と大文字で構成されているかどうかにかかわらず、名前と番号の両方ですべての重複を見つけることができるクエリが必要です

output
name number count
2    111     aaa
2    ---     abb
2    ---     cca
2    222     ---
4

2 に答える 2

5

更新された質問

「番号と名前の両方で重複する」...「名前と番号を異なる列として」
行はここで2回カウントできます!

SELECT lower(name), NULL AS number, count(*) AS ct
FROM   tbl
GROUP  BY lower(name)
HAVING count(*) > 1

UNION  ALL
SELECT NULL, number, count(*) AS ct
FROM   tbl
GROUP  BY number
HAVING count(*) > 1;

-> sqlfiddle

元の質問

問題は、クエリが次のようにグループ化することです。

GROUP  BY lower(name), number

行3と4は異なる numberため、このクエリでは同じではありません。

このクエリで異なる数値を無視する場合は、次のようにしてみてください。

SELECT lower(name)
     , count(*) AS ct
FROM   tbl
GROUP  BY lower(name)
HAVING count(*) > 1;
于 2012-10-30T06:14:21.050 に答える
1

ちょっとした作業で、nameとの両方のカウントをnumber1 つの列に表示できます。

select NameOrNumber, count(*) as Count
from (
    select name as NameOrNumber from tb1
    union all
    select number from tb1
) a
group by NameOrNumber
having count(NameOrNumber) > 1

SQL フィドルの例 #1

出力 #1:

| NAMEORNUMBER | COUNT |
------------------------
|          111 |     2 |
|          aaa |     2 |
|          abb |     2 |
|          cca |     2 |

出力を別々の列に表示する場合は、次のようにすることができます。

select distinct if(t1.name = t2.name, t1.name, null) as DUPLICATE_Name,
    if(t1.number = t2.number, t1.number, null) as DUPLICATE_Number
from tb1 t1
inner join tb1 t2 on (t1.name = t2.name or t1.number = t2.number)
    and t1.slno <> t2.slno

SQL フィドルの例 #2

出力 #2:

| DUPLICATE_NAME | DUPLICATE_NUMBER |
-------------------------------------
|            Aaa |              111 |
|            Abb |           (null) |
|            cca |           (null) |
于 2012-10-30T06:23:40.637 に答える