SQL选择不同的子字符串,例如muddleup howto

问题描述

| 我有一个表,其中的字段与此类似:
ANIMAL
========
FISH 54
FISH 30
DOG 12
CAT 65
CAT 09
BIRD 10
FISH 31
DOG 10
以后该领域可能会添加新的动物,例如
GOAT 72
DOG 20
我想做的是一个
SELECT
查询,该查询返回每个动物名唯一的一行,返回一个数据集,每种动物每种类型都有一行,我以后可以解析该数据集以列出表中存在的动物。 所以,在魔术之后,我会
FISH 54
DOG 12
CAT 65
BIRD 10
GOAT 72
...从中我列出我的清单。 到目前为止,我一直在混淆子查询
SELECT disTINCT
SUBSTRING()
,但是我觉得与SO蜂巢式思维相比,我想出的任何结果都可能会黯然失色。有人可以帮忙吗? 更新 如果有帮助,我的失败尝试说明了我想做什么:
SELECT disTINCT substring(animal,1,4) FROM table;
只是现在我没有全名,只有一个子字符串。 :(     

解决方法

        这将适用于SQL Server。如果使用其他内容,则需要找出左侧的对应函数和charindex。 Left当然可以用子字符串替换。
select distinct left(T.Animal,charindex(\' \',T.Animal,1)-1)
from YourTable as T
结果:
-------------------------
BIRD
CAT
DOG
FISH
在MySQL中,您将使用left和定位。 (代码未经测试)
select distinct left(T.Animal,locate(\' \',1)-1)
from YourTable as T
    ,        您还可以使用以下命令获取动物名称列表:
SELECT DISTINCT SUBSTRING_INDEX(animal,\' \',1) FROM table_name;
    ,        
SELECT Name,Max(No)
FROM Table
Group By Name
    ,        为什么不只是
SELECT id,animal,value FROM table GROUP BY animal,id HAVING id = MIN(id)
这将为您提供表中动物的列表,每个动物具有第一个输入的值。 如果不需要,请选择该值,然后执行以下操作: 从表格GROUP BY动物中选择动物