1

問題は、テーブル構造の例です。

マイテーブル

fielda, fieldb
val1    valx
val2    valy
val3    valz
val1    vala

クエリで mytable から選択したい:

fielda, fieldb
val1    valx
val1    vala

基本的にフィールドaが重複しているテーブルから*を選択します。

次に、別のクエリで mytable から選択します

fielda, fieldb
val2    valy
val3    valz

fielda の val1 は重複として検出されたため、選択されず、残りは選択されました。

4

3 に答える 3

3

このクエリは、重複したテーブルをfieldAリストの一番上に並べ替えます。

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT fieldA, COUNT(*) totalCount
            FROM tableName
            GROUP BY fieldA
        ) b ON a.fieldA = b.fieldA
ORDER BY b.totalCount DESC

このクエリは、重複レコードのみを選択します。

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT fieldA, COUNT(*) totalCount
            FROM tableName
            GROUP BY fieldA
        ) b ON a.fieldA = b.fieldA
WHERE b.totalCount > 1
ORDER BY b.totalCount DESC

そしてこれは、2番目のクエリにないレコードを選択します(上記

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT fieldA, COUNT(*) totalCount
            FROM tableName
            GROUP BY fieldA
        ) b ON a.fieldA = b.fieldA
WHERE b.totalCount = 1
ORDER BY b.totalCount DESC
于 2012-10-27T15:32:28.563 に答える
2
select fielda, fieldb from mytable group by fielda having count(*) >1

select fielda, fieldb from mytable group by fielda having count(*) =1
于 2012-10-27T15:31:34.037 に答える
0

最初の場合:

SELECT * FROM tbl GROUP BY fielda HAVING COUNT(*)>1

2番目の場合:

SELECT DISTINCT(fielda) FROM tbl

于 2012-10-27T15:32:04.383 に答える