SQL выбрать отличную подстроку, где как путаница как - PullRequest
5 голосов
/ 10 июня 2011

У меня есть таблица с полем, похожим на это:

ANIMAL
========
FISH 54
FISH 30
DOG 12
CAT 65
CAT 09
BIRD 10
FISH 31
DOG 10

В поле позже могут быть добавлены новые животные, такие как

GOAT 72
DOG 20

What I 'Мне бы хотелось сделать запрос SELECT, который возвращает одну уникальную строку на имя животного, возвращая набор данных с одной строкой на тип животного, который я позже смогу проанализировать, чтобы составить список животных, присутствующих в моей таблице.

Итак, после магии у меня будет

FISH 54
DOG 12
CAT 65
BIRD 10
GOAT 72

... из которого я буду составлять свой список.

До сих пор я ссорился сподзапросы, SELECT DISTINCT и SUBSTRING(), но я чувствую, что любой результат, который я придумал, вероятно, побледнеет по сравнению с могуществом разума Ульи.Кто-то может помочь?

ОБНОВЛЕНИЕ

Если это поможет, моя неудачная попытка как бы иллюстрирует то, что я хочу сделать:

SELECT DISTINCT substring(animal,1,4) FROM table;

только сейчасУ меня нет полного имени, только подстрока.(

Ответы [ 4 ]

6 голосов
/ 10 июня 2011

Это будет работать для 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
3 голосов
/ 20 января 2012

Вы также можете использовать следующее, чтобы получить список имен животных:

SELECT DISTINCT SUBSTRING_INDEX(animal, ' ', 1) FROM table_name;
1 голос
/ 10 июня 2011
SELECT Name, Max(No)
FROM Table
Group By Name
1 голос
/ 10 июня 2011

Почему не просто

SELECT id, animal, value FROM table GROUP BY animal, id HAVING id = MIN(id)

Это должно дать вам список животных в таблице, каждое животное с первым введенным значением.

Если вам не нужно, выберите значение, а затем просто:

ВЫБРАТЬ животное из таблицы ГРУППА BY животное

...