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

选择所有具有GROUP BY一列的列

谢泽语
2023-03-14
问题内容

我有这张表:

+----+-----+----------+
| id | name| key      |
+----+-----+----------+
| 1  | foo |111000    |
| 2  | bar |111000    |
| 3  | foo |000111    |
+----+-----+----------+

有没有一种方法可以通过密钥分组来获得此结果?

+----+-----+----------+
| id | name| key      |
+----+-----+----------+
| 2  | bar |111000    |
| 3  | foo |000111    |
+----+-----+----------+

或此结果:

+----+-----+----------+
| id | name| key      |
+----+-----+----------+
| 1  | foo |111000    |
| 3  | foo |000111    |
+----+-----+----------+

如果我使用此查询:

SELECT * FROM sch.mytable GROUP BY(key);

我知道这是不正确的,因为我应该按需要显示的所有列进行分组。

有解决这个问题的方法吗?


问题答案:

适用于所有数据库引擎的查询将是

select t1.*
from sch.mytable t1
join
(
    SELECT min(id) as id
    FROM sch.mytable 
    GROUP BY key
) t2 on t1.id = t2.id

min(id)影响您获得结果的功能在哪里?如果您使用max(id),则得到另一个。



 类似资料:
  • 本文向大家介绍MySQL 选择所有列(*),包括了MySQL 选择所有列(*)的使用技巧和注意事项,需要的朋友参考一下 示例 询问 结果 您可以通过执行以下操作从一个连接的一个表中选择所有列: 最佳实践*除非正在调试或获取row(s)关联数组,否则不要使用,否则架构更改(ADD / DROP /重新排列列)可能会导致讨厌的应用程序错误。另外,如果提供结果集中所需的列列表,MySQL的查询计划程序通

  • 问题内容: 有没有一种方法可以选择某个表的列名,只有那些具有空值的列除外,而不知道该表有多少列。 应导致: 谢谢! 问题答案: 创建具有以下内容的存储过程:

  • 问题内容: 我正在尝试使用select语句从某个MySQL表中获取除一个以外的所有列。有没有简单的方法可以做到这一点? 编辑:此表中有53列(不是我的设计) 问题答案: 实际上有一种方法,您当然需要具有执行此操作的权限… 更换

  • 我有一个超过100列的表,我想编写一个选择查询,根据一列的不同条件从表中选择所有的列。 在上面的示例中,我想选择Col_A唯一的所有列(在源表中存在多个值的情况下首次出现)

  • 问题内容: 在SQL中,将行复制到另一个(备份)表中。如果备份表具有不同的结构(或不同的列名称),这可能吗?如果没有,实现此目标的最佳方法是什么? 这是我想做的:具有columns 。我想将一些行从该表复制到另一个具有column的表。内容进入,对等 问题答案: 该 列名 不事可言,只要该 数据类型 相匹配。 如果列的数据类型不匹配,请尝试相应地强制转换值。 只需尝试 使用小的虚拟表。确保明确列出

  • 问题内容: 如何使用JOIN从一个表中选择所有列,从另一个表中仅选择一些列?在MySQL中。 问题答案: 只需使用表名: 这将选择所有列和列和从。