SQL选择不同的数据

时间:2018-02-18 17:57:24

标签: mysql sql select distinct

我是SQL的新手,无法找到我的问题的答案。我只有一个大表,需要从其中提取两个不同的列,其中包含来自其他列的额外数据。

示例:

表1

id  animal  color   size     name, breed etc
1   cat     white   medium
2   cat     white   big
3   dog     white   medium
5   dog     white   big
6   cat     black   small
7   cat     black   small

我问动物和颜色的“选择不同的...”和id和大小的两个列。所以我需要这样回答:

结果:

1  cat  white  medium
3  dog  white  medium
6  cat  black  small

我试图加入桌子,但没有成功。

2 个答案:

答案 0 :(得分:0)

根据你所描述的,这样的事情可能会起作用:

SQL> with test (id, animal, color, c_size) as
  2  (select 1, 'cat', 'white', 'medium' from dual union
  3   select 2, 'cat', 'white', 'big'    from dual union
  4   select 3, 'dog', 'white', 'medium' from dual union
  5   select 5, 'dog', 'white', 'big'    from dual union
  6   select 6, 'cat', 'black', 'small'  from dual union
  7   select 7, 'cat', 'black', 'small'  from dual
  8  )
  9  select min(id) id, animal, color, max(c_size) c_size
 10  from test
 11  group by animal, color;

        ID ANI COLOR C_SIZE
---------- --- ----- ------
         1 cat white medium
         3 dog white medium
         6 cat black small

SQL>

答案 1 :(得分:0)

这可以使用over()分区子句来实现。

从中选择动物,颜色,大小   (        选择动物,颜色,大小,row_number()(按动物划分,颜色顺序按大小)作为rowx          来自table_name ) 作为X,其中rowx = 1;