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(\' \', T.Animal, 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动物中选择动物     

要回复问题请先登录注册