Mysql 通过忽略前两个字符,如何从下面的重复记录中获得唯一记录列表?
规则如下:Mysql 通过忽略前两个字符,如何从下面的重复记录中获得唯一记录列表?,mysql,sql,Mysql,Sql,规则如下: 比较userId时,仅搜索以“AB”开头的userId及其匹配的重复项(除了“AB”)。然后,只返回上面的重复用户ID,在开始处有“AB”,就可以得到一个“unique userId”列表 对于返回的以“AB”开头的重复字符串,我们需要确保有“duplicate”;否则,我们不应返回0记录 我知道这听起来很混乱,请参见下面的示例: 包含10条记录的表用户名及其用户ID字段(10条记录)为: 运行查询后的所需结果: ABC1234 ABF1235 请注意:尽管ABY1236以“AB”
ABC1234
ABF1235
请注意:尽管ABY1236以“AB”开头,但此记录不应在输出中返回,因为它没有类似Y1236的“重复”匹配(忽略前两个字符“AB”)
下面我有一个示例查询,但它只返回了重复的记录,不以“AB”开头,还将返回ABY1236
SELECT distinct substr(userId , -(length(userID)-2))
from UserName where userId like 'AB%';
谢谢你的帮助 您可以使用EXISTS检查是否存在一个用户ID,该用户ID等于从3d字符开始的“AB…”的右部分:
select u.userId from UserName u
where
u.userId like 'AB_%'
and
exists (
select 1 from UserName where userId = substr(u.userId, 3)
)
您可以尝试使用selct联接仅检查匹配结果
SELECT substr(a.userId , -(length(a.userID)-2))
from UserName a
INNER JOIN UserName b ON a.substr(a.userId , -(length(a.userID)-2)) = b.UserId
AND userId like 'AB%'
包括@scaisEdge谢谢。抱歉之前的评论,我不完全理解OP的问题,你的答案似乎是正确的
SELECT substr(a.userId , -(length(a.userID)-2))
from UserName a
INNER JOIN UserName b ON a.substr(a.userId , -(length(a.userID)-2)) = b.UserId
AND userId like 'AB%'