首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从水果桌上拿水果单

从水果桌上拿水果单
EN

Stack Overflow用户
提问于 2015-08-10 20:34:43
回答 4查看 653关注 0票数 0

我试图从水果表中获得一次订单,即使在此之前存在fruit_name,如果是这样的话:

  1. 苹果
  2. 苹果
  3. 桔黄色的
  4. 桔黄色的
  5. 桔黄色的
  6. 苹果
  7. 苹果

我想要这份订单:Apple, Orange, Apple

或者如果我有以下情况:

  1. 苹果
  2. 苹果
  3. 桔黄色的
  4. 桔黄色的
  5. 桔黄色的
  6. 草莓
  7. 草莓
  8. 草莓

我想要Apple, Orange, Strawberry

我尝试过这个查询,但是对于第一个场景,它不起作用。

select distinct fruit_name FROM fruit where ORDER BY fruit_id ASC

我怎么才能拿到呢?

我很感谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-08-10 21:00:51

跟进我的注释--因为在SQL中行是无序的,我假设表有两个列: ID和Name。这假设ID是连续的-参见Sami对ID被排序但不一定是连续的情况的回答。既然如此,这样的事情就会被很好地定义:

代码语言:javascript
复制
select ID, Name
from Fruit F1
where F1.ID + 1 not in (
    select ID
    from Fruit F2
    where F1.Name = F2.Name
) order by ID Asc

这是通过选择所有水果名称来工作的,这样下面的水果名称与当前名称不一样。根据定义,我们总是在具有相同名称的行的运行中选择最后一行(因为运行后的行将具有不同的水果名称,因此它将满足WHERE子句)。鉴于此:

代码语言:javascript
复制
1 Apple
2 Apple
3 Orange
4 Orange
5 Orange
6 Apple
7 Apple

您可以将此作为输出:

代码语言:javascript
复制
2 Apple
5 Orange
7 Apple
票数 1
EN

Stack Overflow用户

发布于 2015-08-10 20:47:05

我想你是在把你的结果分组。你可以把你的结果分组,这样每个水果总是只有一个结果。但是,如果你是按名字分组,你不能让苹果显示两次-只有一次(见下面如何实现两个苹果的结果)。另外,我想奥朗是一个错误,它也应该是橙色。

这选择苹果,橘子,草莓

代码语言:javascript
复制
SELECT fruit_name FROM fruit GROUP BY name ORDER BY name

此外,如果您想要不同的顺序,只需更改ORDER BY子句:

代码语言:javascript
复制
SELECT fruit_name FROM fruit GROUP BY name ORDER BY name = 'Orange' DESC, name

以上查询选择橙、苹果、草莓

如果您的表的结构更复杂,您还可以获得2个Apple的结果。您只需要使用另一列来分组,例如,类似于apple_type

代码语言:javascript
复制
SELECT fruit_name FROM fruit GROUP BY fruit_name, apple_type

记住:在一些数据库(如Oracle )中,您不能选择不在GROUP BY子句或聚合函数中的列,比如SUM()。

票数 1
EN

Stack Overflow用户

发布于 2015-08-10 20:51:19

假设您有一个具有用于排序的运行id的表,则可以这样做。让我们假设有一个表data,其中id列用于排序,name用于水果:

代码语言:javascript
复制
SELECT name FROM (
  SELECT id, name, (SELECT COUNT(*) FROM data d
    WHERE d.name<>data.name AND d.id<=data.id) as t
  FROM data) x
GROUP BY name, t ORDER BY MIN(id)

这将首先计算其他值中有多少在这些值之前,本质上进行分组。然后,当我们按水果和计数分组时,我们就可以区分实际的组。MIN(id)的排序确保它们的顺序是正确的,因为数据库可以返回它们,而不是它想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31928636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档