规则如下:
比较 userId 时,仅搜索以“AB”开头的 userId 及其匹配的重复项(“AB”除外)。然后通过仅返回上面以“AB”开头的重复用户 ID 来获取“唯一用户 ID”列表。
对于返回以'AB'开头的重复字符串,我们需要确保有“duplicate”;否则,我们不应该返回 0 条记录
我知道这听起来很困惑,请参阅下面的示例:
表UserName有10条记录,其userId字段(10条记录)为:
ABC1234
C1234
C12345
BC12345
BBC1234
ABF1235
F1235
ABY1236
BCD3456
D3456
运行查询后所需的结果:
ABC1234
ABF1235
请注意:虽然 ABY1236 以“AB”开头,但该记录不应在输出中返回,因为它没有像 Y1236 那样的“重复”匹配(忽略前两个字符“AB”)。
下面有一个示例查询,但它只返回不以“AB”开头的重复记录,而且还会返回 ABY1236。
SELECT distinct substr(userId , -(length(userID)-2))
from UserName where userId like 'AB%';
感谢您的帮助!
最佳答案
您可以使用 EXISTS 来检查是否存在等于从 3d 字符开始的“AB..”右侧部分的 userId:
select u.userId from UserName u
where
u.userId like 'AB_%'
and
exists (
select 1 from UserName where userId = substr(u.userId, 3)
)
关于mysql - 如何通过忽略前两个字符来从下面的重复记录中获取唯一记录的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54431126/