Forum Webscript.Ru

Общие => Базы данных => Тема начата: 5h0cK от 23 Августа 2005, 01:52:41

Название: Выборка из базы с уникальными значениями столбца
Отправлено: 5h0cK от 23 Августа 2005, 01:52:41
Необходимо, чтобы из базы выбирались строки с уникальным значением некоторого столбца \'x\'.
Название: Выборка из базы с уникальными значениями столбца
Отправлено: tserbis от 23 Августа 2005, 09:32:54
Нужно
выбрать записи, в которых значение поля X такое, которого нет больше ни в одной другой записи
или
нужно выбрать все существующие значения поля X, не более чем один раз каждое?
Название: Выборка из базы с уникальными значениями столбца
Отправлено: 5h0cK от 23 Августа 2005, 18:39:32
первый вариант, со вторым всё просто
Название: Выборка из базы с уникальными значениями столбца
Отправлено: tserbis от 23 Августа 2005, 18:57:45
По-моему выбрать все значения X таких строк

SELECT X, COUNT(*) AS cnt
FROM t
GROUP BY X
HAVING cnt = 1

а потом выбирать нужные поля записей, у которых X входит в полученный список.
Название: Выборка из базы с уникальными значениями столбца
Отправлено: 5h0cK от 23 Августа 2005, 19:56:23
Предложенную вами выбрку можно реализовать так:

SELECT DISTINCTROW(или просто DISTINCT) x
FROM table

Ну а задачу я видимо буду решать выборкой всех строк с группировкой по столбцу \'x\' и построчной обработкой результатов средствами Perl\'а.
Название: Выборка из базы с уникальными значениями столбца
Отправлено: tserbis от 24 Августа 2005, 11:04:00
Цитировать
5h0cK:
Предложенную вами выбрку можно реализовать так...

Ну конечно...
SELECT DISTINCT x FROM table
выберет все встречающиеся в таблице x по одному разу независимо от того, сколько раз встречается каждое.

Я в своём первом посте этого треда спрашивал (вариант 2), не это ли нужно. Вы сказали нет.
Название: Выборка из базы с уникальными значениями столбца
Отправлено: 5h0cK от 24 Августа 2005, 21:03:27
Тогда я наверное не совсем понял, как предложенный вами запрос решает задачу (вариант "1").
Название: Выборка из базы с уникальными значениями столбца
Отправлено: 5h0cK от 24 Августа 2005, 21:22:37
Просто не хотелось делать отдельный запрос для получения каждой записи. Сделать что-то типа

SELECT a, b, DISCTINCT(c), d, e FROM t

Видимо одним запросом это не сделать.