如何使用varchar类型的列在mysql中获取唯一的行
我有一个名为“person\u data”的表:-如何使用varchar类型的列在mysql中获取唯一的行,mysql,sql,Mysql,Sql,我有一个名为“person\u data”的表:- id req_type reqp_id reqt_id dev_id 1 track 11 12 33 2 stop_track 11 12 33 3 track 12 13 44 4 stop_track 12 13 44 5 track 12
id req_type reqp_id reqt_id dev_id
1 track 11 12 33
2 stop_track 11 12 33
3 track 12 13 44
4 stop_track 12 13 44
5 track 12 13 45
6 track 13 14 55
现在的条件是我想要:-
id req_type reqp_id reqt_id dev_id
2 stop_track 11 12 33
4 stop_track 12 13 44
5 track 12 13 45
6 track 13 14 55
只有具有reqp_id、reqt_id、dev_id列重复的行的最后一行。
所有行,如果它们没有这三列作为副本。
这种情况是我们不能用的。
我尝试的是:-
select max(id),min(req_type),reqp_id, reqt_id, dev_id
from person_data group by reqp_id, reqt_id, dev_id;
输出与我想要的完全相同:-
id req_type reqp_id reqt_id dev_id
2 stop_track 11 12 33
4 stop_track 12 13 44
5 track 12 13 45
6 track 13 14 55
如果我使用:-
select max(id),max(req_type),reqp_id, reqt_id, dev_id
from person_data group by reqp_id, reqt_id, dev_id;
然后,输出仅在req_type列中更改为:-
req_type
track
track
track
track
但输出清楚地描述了max或min函数使用字母顺序对值进行排序,我不希望这样,否则如果有人更改req_type列的值,则输出将被更改。
提前感谢,试试这个
SELECT T.* FROM person_data T JOIN
(
SELECT Max(id) as maxid,reqp_id, reqt_id, dev_id
FROM person_data
GROUP BY reqp_id, reqt_id, dev_id
) S
ON T.id = S.maxid
产出将是:
可能是Hi Vignesh的重复,谢谢,实际上您的查询基本上是正确的,但是我不想再获得一列maxid,因此我们必须使用SELECT t.*FROM person_data t Inner JOIN SELECT maxid as maxid,reqp_id,reqt_id,dev_id FROM person_data GROUP BY reqp_id,reqt_id,dev_id S ON T.id=S.maxid以获得正确的输出