当前位置: 首页 > 面试题库 >

查询以查找表中名称和数字之间的重复项

西门伟
2023-03-14
问题内容
SELECT count(*), lower(name), number
FROM   tbl
GROUP  BY lower(name), number
HAVING count(*) > 1;

输入tb1

slno name number
1    aaa   111
2    Aaa   111
3    abb   221
4    Abb   121
5    cca   131
6    cca   141
7    abc   222
8    cse   222

该查询只能在数字和名称上找到相同的重复项,但无法在第3和第4行中找到重复项!!!

 SELECT count(*), lower(name)
    FROM   tbl
    GROUP  BY lower(name)
    HAVING count(lower(name)) > 1

这个查询可以找到所有重复的名字!!!它完美地工作

 SELECT count(*), number
    FROM   tbl
    GROUP  BY number
    HAVING count(number) > 1

这个查询可以找到所有重复的数字!!!它完美地工作

我想要一个查询,该查询可以查找名称和数字中的所有重复项,无论名称是否包含小写和大写

output
name number count
2    111     aaa
2    ---     abb
2    ---     cca
2    222     ---

问题答案:

更新的问题

“在编号和名称上都获取重复” …“在不同的列上使用名称和编号”
在这里行可以被计数两次!

SELECT lower(name), NULL AS number, count(*) AS ct
FROM   tbl
GROUP  BY lower(name)
HAVING count(*) > 1

UNION  ALL
SELECT NULL, number, count(*) AS ct
FROM   tbl
GROUP  BY number
HAVING count(*) > 1;

- > sqlfiddle的

原始问题

问题是查询分组依据

GROUP  BY lower(name), number

由于第3行和第4行的内容 不同 number,因此此查询的内容不同。

如果要忽略此查询的其他数字,请尝试以下操作:

SELECT lower(name)
     , count(*) AS ct
FROM   tbl
GROUP  BY lower(name)
HAVING count(*) > 1;


 类似资料:
  • 问题内容: 在两个具有相同列名的表上创建VIEW时,如何避免MySQL中的dup列名错误,如下所示 问题答案: 使用别名作为列名

  • 问题内容: 我需要查询以在Bigquery中查找表(表元数据)的列名,例如SQL中的以下查询: 问题答案: 更新 :现在可以!请参阅下面的文档和答案。 回答,大约在2012年: 尽管这不是第一次请求,但当前无法通过查询检索表元数据(即列名和类型)。 您有理由将其作为查询吗?表格元数据可通过表格API获得。

  • 问题内容: 我从查询中得到以下结果,并在plsql块中浏览记录并向客户发送send_email。 匿名块 我想知道最好的方法是重复查询结果,而不是发送多封电子邮件,而是发送一封包含相关详细信息的电子邮件。例如,在上述情况下SMITH重复两次,所以用上面的方法将史密斯拿到两封电子邮件,而不是我想发一封电子邮件与和 我怎样才能做到这一点? 问题答案: 为此,请不要在PL / SQL的循环内进行循环-使

  • 问题内容: 当我这样做时(在laravel中): 它说: SQLSTATE [HY093]:无效的参数号(SQL:SELECT * FROM my_table,其中id =:id || id =:id) 但是当我这样做时(使用纯PHP): 成功了。我究竟做错了什么? PS显然,遇到问题时我运行的查询更有意义。 UPD 或多或少的真实查询: 问题答案: 从我所看到的一切都可以归结为无法处理命名参数。

  • 问题内容: 查询,本机查询,命名查询和类型查询之间有什么区别?“独立”查询是否存在,还是只是缩写?在我看来,本机查询是用简单sql编写的查询,而命名查询与实体(hibernate映射)有关。有人可以简要解释一下吗? 问题答案: 询问 查询是指JPQL / HQL查询,其语法类似于通常用于执行DML语句(CRUD操作)的SQL。 在JPA中,您可以使用创建查询。您可以查看API以获得更多详细信息。

  • 问题内容: 简单的问题: 我需要一个解决方案,以便可以在AF之间查找名称,包括所有以F开头的名称。 如果您使用BETWEEN或A> =值<= F,您会发现它停在F位置。因此,我将其发布为建议。 注意:用户将看到2个文本框,它们可以接受用户输入的范围。 用户可以像这样细化F边界的距离:用户键入’Fa’意味着结果应该返回:Fauder,Fail,Famber等。 我目前有2个解决方案,但是有一种更好的