我有这样的表用户
UserID | UserName | UserEmail | FlagUser
1 | Penny | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7d0d181313043d1a101c1411531e1210" rel="noreferrer noopener nofollow">[email protected]</a> | A1
2 | Maika | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dbb6bab2b0ba9bbcb6bab2b7f5b8b4b6" rel="noreferrer noopener nofollow">[email protected]</a> | A1
3 | Laila | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7f131e16131e3f18121e1613511c1012" rel="noreferrer noopener nofollow">[email protected]</a> | A1
4 | Laura | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d5b9b4a0a7b495b2b8b4bcb9fbb6bab8" rel="noreferrer noopener nofollow">[email protected]</a> | A2
5 | Penny | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4131242f2f3801262c20282d6f222e2c" rel="noreferrer noopener nofollow">[email protected]</a> | A2
6 | Maika | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="90fdf1f9fbf1d0f7fdf1f9fcbef3fffd" rel="noreferrer noopener nofollow">[email protected]</a> | A2
我想要这样的结果,如果用户有多个数据,我希望使用 FlagUser
A2 获取用户
UserID | UserName | UserEmail | FlagUser
3 | Laila | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="98f4f9f1f4f9d8fff5f9f1f4b6fbf7f5" rel="noreferrer noopener nofollow">[email protected]</a> | A1
4 | Laura | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c4a8a5b1b6a584a3a9a5ada8eaa7aba9" rel="noreferrer noopener nofollow">[email protected]</a> | A2
5 | Penny | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7505101b1b0c351218141c195b161a18" rel="noreferrer noopener nofollow">[email protected]</a> | A2
6 | Maika | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a9c4c8c0c2c8e9cec4c8c0c587cac6c4" rel="noreferrer noopener nofollow">[email protected]</a> | A2
最佳答案
如果您使用的是 mysql 8.0 那么 row_number()
WITH
Common table expression是方便的方法:
架构:
create table user(UserID int, UserName varchar(50), UserEmail varchar(50), FlagUser varchar(50));
insert into user values(1, 'Penny' , '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cdbda8a3a3b48daaa0aca4a1e3aea2a0" rel="noreferrer noopener nofollow">[email protected]</a>' ,'A1');
insert into user values(2, 'Maika' , '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2e434f47454f6e49434f4742004d4143" rel="noreferrer noopener nofollow">[email protected]</a>' ,'A1');
insert into user values(3, 'Laila' , '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a2cec3cbcec3e2c5cfc3cbce8cc1cdcf" rel="noreferrer noopener nofollow">[email protected]</a>' ,'A1');
insert into user values(4, 'Laura' , '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1a767b6f687b5a7d777b737634797577" rel="noreferrer noopener nofollow">[email protected]</a>' ,'A2');
insert into user values(5, 'Penny' , '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bcccd9d2d2c5fcdbd1ddd5d092dfd3d1" rel="noreferrer noopener nofollow">[email protected]</a>' ,'A2');
insert into user values(6, 'Maika' , '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="204d41494b4160474d41494c0e434f4d" rel="noreferrer noopener nofollow">[email protected]</a>' ,'A2');
查询
with cte as
(
select *,row_number()over(partition by username order by flaguser desc) rn
from user
)
select * from cte where rn=1
输出:
db<> fiddle here
您也可以使用 Inner join
获得相同的结果和group by
子句:
select u.* from user u
inner join
(select username,max(flaguser) maxflaguser from user
group by username) u2
on u.username=u2.username and u.flaguser=u2.maxflaguser
输出:
或者您可以使用子查询为每个用户选择具有最高值 flaguser
的单行:
Select * from user u
where flaguser=(select max(flaguser) from user u2 where u.username=u2.username)
输出:
db<> fiddle here
关于mysql - MySQL删除重复数据的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66902000/