我对 DISTINCT
关键字有点困惑。让我们猜测此查询将获取区分查询中设置的列的所有记录:
$query = "SELECT DISTINCT name FROM people";
现在,该查询正在获取所有区分“name”列的记录,同时仅获取“name”列。我应该如何只区分一列并同时获得所有需要的列?
方案如下:
需要列
- 姓名
- 姓氏
- 年龄
不同的列
- 姓名
该查询的正确语法是什么?提前致谢。
最佳答案
如果您希望每个名称一行,那么常规方法是聚合查询:
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;
我强烈建议您不要使用它。它是非标准的,值来自不确定 匹配行。甚至不能保证它们来自同一行(尽管它们通常在实践中这样做)。
通常,您想要的是最大年龄的东西。如果是这样,您将以不同的方式处理:
select t.*
from t
where t.age = (select max(t2.age) from t t2 where t2.name = t.name);
注意:这不使用group by
。并且,如果有多行具有相同的年龄,它将返回重复项。
另一种方法使用变量——另一个 MySQL 特有的特性。但是,如果您仍在学习 select
,您可能应该等待了解变量。
关于php - MYSQL/PHP - 从由一列区分的表记录中选择所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39248261/