Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择不同的值,而其他值可以是任何值?_Mysql - Fatal编程技术网

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

Mysql 选择不同的值,而其他值可以是任何值?,mysql,Mysql,不知道该怎么做,也不知道该如何表达才能找到答案 假设我从表中选择了id、名称、标题和内容 身份证、姓名和头衔可以是任何东西,都无所谓。但我只想选择一列内容不同的列。所以 1, Bob, Builder, Hammer 2, Tom, Train, Track 3, Charlotte, Spider, Web 1, Bob, Builder, Children 2, Tom, Train, Children 3, Charlotte, Spider, Children 因此,我想选择前三个,并

不知道该怎么做,也不知道该如何表达才能找到答案

假设我从表中选择了id、名称、标题和内容

身份证、姓名和头衔可以是任何东西,都无所谓。但我只想选择一列内容不同的列。所以

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

因此,我想选择前三个,并且只选择下三个中的一个。

这可能会满足您的要求

SELECT id, name, title, stuff FROM theTable GROUP BY stuff
您可以尝试以下方法:

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。在这种情况下,这并不重要

第二版更安全:

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;

我同意集合是个好主意。。。但这可以从一行返回id,从另一行返回名称,从另一行返回标题。。。这可能是个问题,也可能不是,但要记住……没错。取决于作者的任务。