1

useridとfriendwith列が重複しているため、最後の行を削除したいと思います。

friendshipid    userid  friendwith  friendshipstatus
183             24      102          4
151             24      52           2
155             24      66           2
179             24      66           2

ありがとう。

4

3 に答える 3

3

最新の友情IDを保持したい場合は、次のようにします

CREATE TABLE temp_table AS (SELECT * FROM table);
DELETE FROM table WHERE friendshipid NOT IN (SELECT friendshipid FROM (SELECT * FROM temp_table ORDER BY friendshipid DESC) as temp_table GROUP BY userid, friendwith);
DROP TABLE temp_table ;

または、最も古い友情IDを保持したい場合は、次のようにします

CREATE TABLE temp_table AS (SELECT * FROM table);
DELETE FROM table WHERE friendshipid NOT IN (SELECT friendshipid FROM (SELECT * FROM temp_table ORDER BY friendshipid ASC) as temp_table GROUP BY userid, friendwith);
DROP TABLE temp_table ;
于 2012-04-15T09:11:30.670 に答える
1

userid同じとが、friendswithより低い別の行が存在するすべての行を削除できますfriendshipid。例えば:

delete  dup
from    YourTable as dup
join    YourTable orig
on      orig.userid = dup.userid
        and orig.friendwith = dup.friendwith
        and orig.friendshipid < dup.friendshipid

SQLフィドルでの例。

于 2012-04-15T09:10:47.573 に答える
0
select friendshipid  ,  userid  , friendwith  , friendshipstatus from table 
group by userid , friendwith  
于 2012-04-15T09:05:48.967 に答える