回答:
集計結果の比較にはHAVING、not WHERE句を使用します。
額面でのクエリの場合:
SELECT *
FROM db.table
HAVING COUNT(someField) > 1
理想的にGROUP BYは、HAVING句に適切な評価のための定義が必要ですが、MySQLではGROUP BY ...
これはの一意の制約の準備中someFieldですか?それはそうであるように見える...
someFieldため、null以外の値が2つ以上含まれている場合はテーブル全体が返され、含まれていない場合は空の結果セットが返されます。
SELECT username, numb from(
Select username, count(username) as numb from customers GROUP BY username ) as my_table
WHERE numb > 3
どうぞ:
SELECT Field1, COUNT(Field1)
FROM Table1
GROUP BY Field1
HAVING COUNT(Field1) > 1
ORDER BY Field1 desc
SQLの2つのテーブル間のGroup Byの例を挙げます。
Select cn.name,ct.name,count(ct.id) totalcity
from city ct left join country cn on ct.countryid = cn.id
Group By cn.name,ct.name
Having totalcity > 2
また、「pk」がキーフィールドであることも言及する必要があります。自己結合
SELECT t1.* FROM db.table t1
JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk
ビル・カーウィンによって、私が欲しかった重複であるすべてのレコードをあなたに与えます。いくつかは2つ以上あるため、同じレコードを複数回取得できます。同じフィールドを持つ別のテーブルにすべてを書き込んで、キーフィールドの抑制によって同じレコードを削除しました。私は試した
SELECT * FROM db.table HAVING COUNT(someField) > 1
上記の最初。そこから返されるデータは、重複の1つだけを提供します。これは、これが提供するものの1/2未満ですが、それが必要な場合は、カウントは適切です。
GROUP BY確かに必要です(これが一部のMySQL非標準のものでない限り)?