选择不同的值而其他值可以是任何值?

时间:2012-03-20 19:48:12

标签: mysql

不确定如何执行此操作,并且不确定如何对其进行短语以找到答案。

说我有SELECT id, name, title, stuff FROM table

ID,名称和标题可以是任何内容,无关紧要。但我只想选择1列不同的东西。所以..

1, Bob, Builder, Hammer
2, Tom, Train, Track
3, Charlotte, Spider, Web
1, Bob, Builder, Children
2, Tom, Train, Children
3, Charlotte, Spider, Children

所以我想选择前三个而且只选择接下来三个中的一个。

2 个答案:

答案 0 :(得分:1)

这可能会做你想要的......

SELECT id, name, title, stuff FROM theTable GROUP BY stuff

答案 1 :(得分:1)

你可以试试这个:

select
  max(id) as id,
  max(name) as name,
  max(title) as title,
  stuff
from
  table
group by
  stuff;

我们在这里有聚合(group by),并且GROUP BY claus中未枚举的所有字段都应该由某个聚合函数处理。 MAX是这些功能之一。这意味着以下内容。当sql引擎找到几个具有相同stuff字段值的行时,它会将它们折叠为单行。但其他领域有不同的价值观。对于字段名称,应该采用三个值中的哪一个?我们应该指出sql引擎在这种情况下要做什么。例如,通过指定聚合函数MAX,我们强制sql引擎选择最多三个值。在我们的案例中,“Tom”将返回字段名称。我们可以使用其他一些聚合函数,例如MIN。在这种情况下没关系。

第2版(更安全):

select
  t.id,
  t.name,
  t.title,
  t.stuff
from
  (select
    max(id) as id,
    stuff
   from 
     table
   group by
    stuff
  ) as gt
join
  table t on t.id = gt.id;