Дублирующиеся строки в Oracle - PullRequest
2 голосов
/ 03 мая 2009

Как я могу предотвратить выбор дублирующихся строк в запросе выбора?

У меня есть таблица со следующими полями:

  • имя
  • тип
  • user1
  • user2
  • user3
  • дата

Мой запрос требует, чтобы я выбирал данные для конкретного пользователя только в то время, которое пользователь вводит в интерфейс. Скажем, пользователь вводит 1, тогда запрос на выборку должен получать данные только для пользователя 1.

В настоящее время я делаю это так:

select name,type,date from table1 order by user1;

Но я получаю лишние строки в результате ??

что я делаю не так? Как избежать этих повторяющихся строк?

Пожалуйста, помогите ...

Ответы [ 3 ]

6 голосов
/ 03 мая 2009

Не знаю, понял ли я ваш вопрос полностью. Но я все равно попробую:

  1. Если вы хотите отфильтровать определенного пользователя на основе введенного пользователем, попробуйте:

    выберите имя, тип, «дату» из таблицы1 где пользователь = [КАКОЙ-ЛИБО ВХОДЫ ВАШЕГО ПОЛЬЗОВАТЕЛЯ] заказ по названию

  2. Если вы хотите выбрать другой столбец (user1, user2, user3) в зависимости от ввода пользователя, попробуйте:

    выбор имени, типа, «даты», декодирования (YOUR_USER_INPUT, 1, user1, 2, user2, 3, user3) из таблицы1 заказ по названию

  3. Если вы просто хотите получить другие результаты, попробуйте выбрать отличительные

    выберите отдельное имя, тип, «дату», user1, user2, user3 из таблицы 1

Пожалуйста, делайте приведите пример, чтобы мы могли помочь соответствующим образом. Удачи, гудлак .

4 голосов
/ 03 мая 2009

У вас есть две опции SELECT DISTINCT или используйте предложение GROUP BY. У вас также есть столбец даты, а в Oracle это также означает, что есть время, поэтому, чтобы быть в безопасности, вы должны урезать столбец даты. Даже если вы знаете, что время не является частью усечения вставки в любом случае. Хорошей практикой является то, что когда вы видите дату, вы считаете, что она имеет время.

Следующая проблема, с которой вы столкнетесь, заключается в том, что вы не можете использовать ORDER BY для столбца, который не является частью команды SELECT.

Моя рекомендация - GROUP BY.


SELECT user1, name, type, TRUNC(date) date
FROM Table1
GROUP BY user1, name, type, TRUNC(date)
ORDER BY user1
1 голос
/ 03 мая 2009

попробуйте SELECT DISTINCT

...