4

これが私のサンプルテーブルです:

|"id","singlesaleid","quantity"
-------------------------------------
| 1,   "00278e0f",    37
| 2,   "00278e0f",    38
| 3,   "002ebd2e",    37
| 4,   "00380783",    37
| 5,   "003b3c35",    37
| 6,   "003b3c35",    38
| 7,   "0042170b",    38
| 8,   "00421b89",    37
| 9,   "00421b89",    38
| 10,  "00587f02",    37
| 11,  "00799433",    38
| 12,  "00799433",    37

singlesaleid 列に少なくとも 2 つの重複値があるこの行のみを選択してグループ化するように選択するにはどうすればよいですか?

結果は次のようになります。

|"id","singlesaleid","quantity"
-------------------------------------
| 1,   "00278e0f",      37
| 6,   "003b3c35",      38
| 9,   "00421b89",      38
| 12,  "00799433",      37

誰か助けてくれませんか?

4

3 に答える 3

3
SELECT  a.*
FROM    TableName a
        INNER JOIN
        (
            SELECT  singlesaleid, MIN(quantity) min_val
            FROM    TableName
            GROUP   BY singlesaleid
            HAVING  COUNT(*) > 1
        ) b a.singlesaleid = b.singlesaleid AND
            a.quantity = b.Min_Val
于 2013-03-19T09:15:35.293 に答える
0

また、 EXISTS()演算子でオプションを使用することもできます。よくわかりませんが、グループからどの行を選択するか、リクエストに応じてMAX(t2.Id)の行を選択します。

SELECT *
FROM Tablename t1
WHERE EXISTS (
              SELECT *
              FROM Tablename t2
              WHERE t1.singlesaleid = t2.singlesaleid
              HAVING COUNT(*) > 1 AND MAX(t2.Id) = t1.id
              )

SQLFiddleのデモ

于 2013-03-19T13:22:32.423 に答える
0

singlesaleid's少なくとも 2 つの重複があるレコードのいずれか (1 つだけ) が必要な場合は、以下のコードを試してください。

select * from table where rowid in 
(select min(rowid) from table
group by singlesaleid
having count(*)>=2)
于 2013-03-19T09:40:52.347 に答える