我有一个表格,其字段与此类似:
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 hive的威力相比显得苍白无力心神。有人可以帮忙吗?
更新
如果有帮助,我失败的尝试就说明了我想做的事情:
SELECT DISTINCT substring(animal,1,4) FROM table;
现在我没有全名,只是一个子串。 :(
答案 0 :(得分:6)
这适用于SQL Server。如果您使用其他内容,则需要确定left和charindex的相应功能。左边当然可以用子串替换。
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
答案 1 :(得分:3)
您还可以使用以下内容获取动物名称列表:
SELECT DISTINCT SUBSTRING_INDEX(animal, ' ', 1) FROM table_name;
答案 2 :(得分:1)
为什么不
SELECT id, animal, value FROM table GROUP BY animal, id HAVING id = MIN(id)
这应该会为您提供表格中的动物列表,每只动物都输入第一个值。
如果您不需要,请选择该值,然后执行:
SELECT animal FROM table GROUP BY animal
答案 3 :(得分:1)
SELECT Name, Max(No)
FROM Table
Group By Name