3

テーブルAという名前のこのテーブルがあるとしましょう

id         foreign_id   value
1             1         x
2             2         y
3             1         y
4             2         x
5             3         x

id主キーはどこですか

id外部 ID でグループ化された最新の行 (の順序でこれをベースにします) を取得するにはどうすればよいですか? 基本的に、私が取得したいのは

id     foreign_id     value
3      1              y
4      2              x
5      3              x  
4

4 に答える 4

3

このクエリを試してください。

SELECT t.id, t.foreign_id, t.value FROM #temp t
WHERE t.id IN (SELECT max(id) FROM #temp GROUP BY foreign_id)

#temp実際のテーブル名に置き換えます。

于 2013-03-14T09:23:47.473 に答える
2

このクエリを試してください

SELECT max(id) AS ID, foreign_id FROM tbl
GROUP BY  foreign_id

値も必要な場合

SELECT a.ID, a.foreign_id, a.value  
FROM tbl a,
(SELECT max(id) AS ID, foreign_id 
        FROM tbl GROUP BY foreign_id) b
WHERE a.id = b.id AND 
      a.foreign_id = b.foreign_id

フィドル

于 2013-03-14T09:16:54.610 に答える
0
SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  foreign_ID, max(id) max_ID
            FROM    tableName
            GROUP   BY foreign_ID
        ) b ON  a.foreign_ID = b.foreign_ID AND
                a.ID = b.max_ID

出力

╔════╦════════════╦═══════╗
║ ID ║ FOREIGN_ID ║ VALUE ║
╠════╬════════════╬═══════╣
║  3 ║          1 ║ y     ║
║  4 ║          2 ║ x     ║
║  5 ║          3 ║ x     ║
╚════╩════════════╩═══════╝
于 2013-03-14T09:20:27.677 に答える