我有一个表,该表的字段与此类似:
ANIMAL ======== FISH 54 FISH 30 DOG 12 CAT 65 CAT 09 BIRD 10 FISH 31 DOG 10
以后该领域可能会添加新的动物,例如
GOAT 72 DOG 20
我想做的是SELECT查询每个动物名称返回唯一的一行,返回一个数据集,每种动物每种类型都有一行,我以后可以解析该数据集以列出表中存在的动物。
SELECT
所以,在魔术之后,我会
FISH 54 DOG 12 CAT 65 BIRD 10 GOAT 72
…从中我列出我的清单。
到目前为止,我一直在和SELECTDISTINCT,和子查询混为一谈SUBSTRING(),但是我觉得与SO蜂巢式思维相比,我想出的任何结果都可能会显得苍白无力。有人可以帮忙吗?
SELECTDISTINCT
SUBSTRING()
更新
如果有帮助,我的失败尝试说明了我想做什么:
SELECT DISTINCT substring(animal,1,4) FROM table;
只是现在我没有全名,只是一个子串。:(
这将适用于SQL Server。如果使用其他方法,则需要找出left和charindex的相应功能。当然,可以用子字符串替换Left。
select distinct left(T.Animal, charindex(' ', T.Animal, 1)-1) from YourTable as T
结果:
------------------------- BIRD CAT DOG FISH
在MySQL中,您将使用left和locate。(代码未经测试)
select distinct left(T.Animal, locate(' ', T.Animal, 1)-1) from YourTable as T