MYSQL / PHP - 从表记录中选择区分一列的所有列

时间:2016-08-31 11:21:37

标签: php mysql distinct fetch

我对DISTINCT关键字感到有点困惑。我们猜测这个查询将获得区分查询中设置的列的所有记录:

$query = "SELECT DISTINCT name FROM people";

现在,该查询正在获取区分列“name”的所有记录,同时仅获取“name”列。我应该如何区分一列并同时获得所有想要的列?

这将是计划:

需要的栏目

  • 姓名
  • 年龄

区分栏目

  • 名称

该查询的正确sintaxis是什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果每个名称需要一行,则普通方法是聚合查询:

select name, max(surname) as surname, max(age) as age
from t
group by name;

MySQL支持group by的扩展,允许您编写查询,例如:

select t.*
from t
group by name;

我强烈建议你使用它。它是非标准的,值来自 indeterminate 匹配的行。甚至没有保证它们来自同一行(尽管它们通常在实践中)。

通常,你想要的是最大的年龄。如果是这样,您可以采用不同的方式处理:

select t.*
from t
where t.age = (select max(t2.age) from t t2 where t2.name = t.name);

注意:这不会使用group by。并且,如果存在多个具有相同年龄的行,它将返回重复项。

另一种方法使用变量 - 另一种特定于MySQL的功能。但是,如果您仍然在学习select,那么您应该等待了解变量。