在SQLite3数据库中查找多个事件?

时间:2018-03-12 11:23:42

标签: sql database sqlite

我的SQL查询无法返回列中发生两次以上的所有条目。 我已经查看了其他StackOverflow的答案,试图这样做,每当我将相同的查询应用于我的时候,只返回条目中第一个字符相同的条目。

例如,数据库中大约有6个条目以' - '开头。它会返回所有这些,即使它们不是完全相同的匹配。

有人能告诉我我的查询出错了吗? 我原本以为寻找重复是标准程序。

以下是我正在使用的查询:

SELECT name FROM subs GROUP BY name HAVING (COUNT(name) > 1);

以下是输出示例:

-Johnny-
-Lady_Gaga-
-Randy_Marsh- 
AJWesty
All_CAPS

注意:我希望找到数据库中多次出现的所有用户名。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试从名称列中删除破折号。这是一种方法:

SELECT REPLACE(name, '-', '')
FROM subs
GROUP BY REPLACE(name, '-', '')
HAVING (COUNT(name) > 1);

但是这种方法存在删除名称中出现破折号的风险。为避免这种情况,我们需要做更多的工作:

SELECT
    CASE WHEN SUBSTR(name, 1, 1) = '-' AND SUBSTR(name, LENGTH(name), 1) = '-'
         THEN SUBSTR(name, 2, LENGTH(name)-2)
         ELSE name END AS name
FROM subs
GROUP BY
    CASE WHEN SUBSTR(name, 1, 1) = '-' AND SUBSTR(name, LENGTH(name), 1) = '-'
         THEN SUBSTR(name, 2, LENGTH(name)-2)
         ELSE name END
HAVING COUNT(*) > 1;