如何从重复的记录中获取唯一记录(通过忽略前两个字符)?

时间:2019-01-28 17:13:58

标签: mysql sql

我们如何从下表(10条记录)中获取唯一的userId列表?

这是规则:比较userId时,仅搜索以'AB'开头的用户ID及其匹配的重复项('AB'除外)。然后,仅通过返回开头没有“ AB”的重复的userId来获得“唯一的userId”的列表。

我知道这听起来令人困惑,请参见下面的示例:

具有10条记录的表 UserName 及其 userId 字段(10条记录)是:

ABC1234
C1234
C12345
BC12345
BBC1234

ABF1235
F1235

BCD3456
D3456

DE3456

所需结果:

C1234
F1235

我在下面使用了一些查询,但发现它根本无法解决问题。这个问题比我想象的要复杂得多,因为我不知道如何确保只找到以'AB'开头的用户ID及其重复(但开头没有'AB')。

SELECT
COUNT(DISTINCT CASE WHEN LEFT(userId, 2) IN ('AB') THEN SUBSTRING(userId, 3)
                    ELSE userId
               END) AS co_count, userId
FROM UserName c where userId like 'AB%';

感谢您的帮助或提示!

1 个答案:

答案 0 :(得分:0)

查看结果似乎只是在寻找字符串开头为'AB'而没有'AB'的左侧

SELECT distinct  substr(userId , -(length(userID)-2))
from  UserName 
where userId like 'AB%';

对于包括所有以'AB'开头的行,您可以使用UNION

SELECT substr(userId , -(length(userID)-2))
from  UserName 
where userId like 'AB%'
UNION 
SELECT userId 
from  UserName 
where userId NOYT like 'AB%'