关于单个表的SELECT查询,还有一个非常实用的操作,就是从结果中去掉重复的行。使用的关键字是DISTINCT。比如我们想要看下heros表中关于攻击范围的取值都有哪些:
SELECT DISTINCT attack_range FROM heros
这是运行结果(2条记录),这样我们就能直观地看到攻击范围其实只有两个值,那就是近战和远程。
如果我们带上英雄名称,会是怎样呢:
SELECT DISTINCT attack_range, name FROM heros
运行结果(69条记录):
这里有两点需要注意:
- DISTINCT需要放到所有列名的前面,如果写成
SELECT name, DISTINCT attack_range FROM heros
会报错。 - DISTINCT其实是对后面所有列名的组合进行去重,你能看到最后的结果是69条,因为这69个英雄名称不同,都有攻击范围(attack_range)这个属性值。如果你想要看都有哪些不同的攻击范围(attack_range),只需要写
DISTINCT attack_range
即可,后面不需要再加其他的列名了。