Forum Webscript.Ru
Общие => Базы данных => Тема начата: 5h0cK от 23 Августа 2005, 01:52:41
-
Необходимо, чтобы из базы выбирались строки с уникальным значением некоторого столбца \'x\'.
-
Нужно
выбрать записи, в которых значение поля X такое, которого нет больше ни в одной другой записи
или
нужно выбрать все существующие значения поля X, не более чем один раз каждое?
-
первый вариант, со вторым всё просто
-
По-моему выбрать все значения X таких строк
SELECT X, COUNT(*) AS cnt
FROM t
GROUP BY X
HAVING cnt = 1
а потом выбирать нужные поля записей, у которых X входит в полученный список.
-
Предложенную вами выбрку можно реализовать так:
SELECT DISTINCTROW(или просто DISTINCT) x
FROM table
Ну а задачу я видимо буду решать выборкой всех строк с группировкой по столбцу \'x\' и построчной обработкой результатов средствами Perl\'а.
-
5h0cK:
Предложенную вами выбрку можно реализовать так...
Ну конечно...
SELECT DISTINCT x FROM table
выберет все встречающиеся в таблице x по одному разу независимо от того, сколько раз встречается каждое.
Я в своём первом посте этого треда спрашивал (вариант 2), не это ли нужно. Вы сказали нет.
-
Тогда я наверное не совсем понял, как предложенный вами запрос решает задачу (вариант "1").
-
Просто не хотелось делать отдельный запрос для получения каждой записи. Сделать что-то типа
SELECT a, b, DISCTINCT(c), d, e FROM t
Видимо одним запросом это не сделать.