我对DISTINCT
关键字感到有点困惑。我们猜测这个查询将获得区分查询中设置的列的所有记录:
$query = "SELECT DISTINCT name FROM people";
现在,该查询正在获取区分列“name”的所有记录,同时仅获取“name”列。我应该如何区分一列并同时获得所有想要的列?
这将是计划:
需要的栏目
区分栏目
该查询的正确sintaxis是什么?提前谢谢。
答案 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
,那么您应该等待了解变量。