gpt4 book ai didi

mysql - 如何使用varchar类型的列在mysql中获取唯一行

转载 作者:行者123 更新时间:2023-11-29 02:24:55 34 4
gpt4 key购买 nike

我有一个名为“person_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 13 45
6 track 13 14 55

现在我要的条件是:-

  1. “reqp_id、reqt_id、dev_id”列重复的那些行只有最后一行。
  2. 如果这三列不重复,则所有行。情况类似于我们不能使用 IN 运算符。

我尝试的是:-

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

但输出清楚地描述了最大或最小函数使用我不想要的字母顺序对值进行排序,否则如果有人更改“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

Fiddle Demo

输出将是:


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

关于mysql - 如何使用varchar类型的列在mysql中获取唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197762/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com