Автор Тема: Выборка из базы с уникальными значениями столбца  (Прочитано 5714 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 5h0cK

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Необходимо, чтобы из базы выбирались строки с уникальным значением некоторого столбца \'x\'.

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
Нужно
выбрать записи, в которых значение поля X такое, которого нет больше ни в одной другой записи
или
нужно выбрать все существующие значения поля X, не более чем один раз каждое?

Оффлайн 5h0cK

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
первый вариант, со вторым всё просто

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
По-моему выбрать все значения X таких строк

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

а потом выбирать нужные поля записей, у которых X входит в полученный список.

Оффлайн 5h0cK

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Предложенную вами выбрку можно реализовать так:

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

Ну а задачу я видимо буду решать выборкой всех строк с группировкой по столбцу \'x\' и построчной обработкой результатов средствами Perl\'а.

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
5h0cK:
Предложенную вами выбрку можно реализовать так...

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

Я в своём первом посте этого треда спрашивал (вариант 2), не это ли нужно. Вы сказали нет.
« Последнее редактирование: 24 Августа 2005, 11:11:15 от tserbis »

Оффлайн 5h0cK

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Тогда я наверное не совсем понял, как предложенный вами запрос решает задачу (вариант "1").

Оффлайн 5h0cK

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Просто не хотелось делать отдельный запрос для получения каждой записи. Сделать что-то типа

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

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28