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

Sybase SQL基于具有ID的多列选择不同

左丘修齐
2023-03-14
问题内容

我正在尝试查询sybase服务器,以获取我们为测试目的而持有的不同类型数据的示例。

我有一张看起来像下面的表格(摘要)

Animals table:
id | type | breed           | name
------------------------------------
1  | dog  | german shepard  | Bernie
2  | dog  | german shepard  | James
3  | dog  | husky           | Laura
4  | cat  | british blue    | Mr Fluffles
5  | cat  | other           | Laserchild
6  | cat  | british blue    | Sleepy head
7  | fish | goldfish        | Goldie

正如我提到的那样,我想要每种类型的示例,因此对于上表,它需要一个类似的结果集(实际上,我只想要ID):

id | type | breed           
---------------------------
1  | dog  | german shepard  
3  | dog  | husky          
4  | cat  | british blue   
5  | cat  | other          
7  | fish | goldfish

我尝试了以下查询的多种组合,但它们要么是无效的SQL(对于sybase),要么返回了无效的结果

  SELECT id, DISTINCT ON type, breed FROM animals
  SELECT id, DISTINCT(type, breed) FROM animals
  SELECT id FROM animals GROUP BY type, breed

您知道如何实现此查询吗?


问题答案:

也许您必须使用聚合函数maxmin用于列ID。对于分组的列,它将仅返回一个ID。

select max(Id), type, breed 
from animals
group by type, breed

编辑:

其他不同的执行方式:

具有汇总功能

select id, type, breed  
from animals 
group by type, breed  
having id = max(Id)

具有和聚合子查询

select id, type, breed 
from animals a1
group by type, breed 
having id = (
               select max(id)
               from animals a2
               where a2.type = a1.type
               and   a2.breed = a1.breed
            )


 类似资料:
  • 我有一个类似下面的数据帧,其中所有ID都是唯一的,列a、B和C的值都在0和1之间。 我想只保留A、B和C的前n个值,这样对于n=2,数据帧看起来如下: 做df.set_index('ID')['A']. n最大(2).reset_index()给我: 有没有比三次合并数据集更简单的方法?

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

  • 问题内容: 在一页中为多个元素提供相同的ID是否安全?例如,当使用某些jquery插件,两次或多次运行某些滑块或图库时,通常会发生这种情况。我们知道,开发人员喜欢给html容器一些ID,以使脚本工作更快。 让我们阅读w3.org文档: 使ID类型的属性特别的原因是,没有两个这样的属性可以具有相同的值。无论使用哪种文档语言,ID属性都可以用来唯一标识其元素。 但是下一个示例具有2个具有相同ID的元素

  • 我有一个示例数据集,如下所示 Col1 Col2 Col3 A 1,2,3 A123 A 4,5 A456 A 1,2,3 A456 A 4,5 A123 我参考了一些解决方案,并尝试了以下方法。但它只追加单个列。

  • 问题内容: 我想选择不具有VAL =’current’的任何行的唯一ID(与多行关联)。 例如,在这样的表中: 我希望它返回ID 23,因为它没有VAL =’current’的行。请注意,在此表中,主键(PK)是唯一的,但ID不是唯一的(因此需要使用DISTINCT或GROUP BY)。 这是我在PHP中拥有的东西: 这就是它的总要旨。如您所见,完成此任务需要两个SQL语句。有没有更短的方法可以做

  • 问题内容: 我有一些用PHP生成的元素,我想知道是否可以选择ID不完整的元素,例如: 该类已经习惯了它们的共同点,但是现在我需要单独选择它们,但我不知道整个ID名称。 我可以使用类似: 问题答案: 不使用ID选择器,因为它们需要完整的ID名称,但使用substring属性选择器: 但是,既然您的元素仍然具有属性,那么为什么不向每个元素组添加一个通用类并按该类进行选择呢?您应该能够像生成ID一样使用