Переписать оператор where в SQL без использования «unique» - PullRequest
1 голос
/ 02 марта 2011

Перепишите предложение where

where unique (select title from course)

без использования уникальной конструкции

Ответы [ 4 ]

2 голосов
/ 02 марта 2011

Определение УНИКАЛЬНОГО предиката следующее:

1) Let T be the result of the <table subquery>.

2) If there are no two rows in T such that the value of each column
in one row is non-null and is equal to the value of the cor-
responding column in the other row according to Subclause 8.2,
"<comparison predicate>", then the result of the <unique predi-
cate> is true; otherwise, the result of the <unique predicate>
is false.

( Редакция ) Таким образом, эквивалентные результаты предиката Unique, как вы его написали, будут:

Where Not Exists    (
                    Select 1
                    From Course
                    Where Title Is Not Null
                    Group By Title
                    Having Count(*) > 1
                    )
1 голос
/ 02 марта 2011
WHERE 1 = ALL(SELECT COUNT(*) FROM course GROUP BY title)
1 голос
/ 02 марта 2011

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

SELECT DISTINCT 
       c.title
  FROM COURSE c

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

SELECT DISTINCT 
       c.title,
       c.instructor
  FROM COURSE c

... столбец заголовка, скорее всего, будет содержать дубликаты, когда 2+ преподавателей преподают один и тот же заголовок курса, потому что DISTINCT возвращает уникальные строки повсе задействованные столбцы.

Предложение GROUP BY является другой альтернативой:

  SELECT c.title
    FROM COURSE c
GROUP BY c.title

... даст тот же набор результатов, что и в первом примере, с использованием DISTINCT.

0 голосов
/ 28 января 2013

УНИКАЛЬНЫЙ тест ключевого слова для отсутствия повторяющихся кортежей

  • Уникальная конструкция проверяет, есть ли в подзапросе повторяющиеся кортежи в результате.
  • Уникальная конструкцияоценивается как «истина» в пустом наборе.

рассмотрим ниже набор данных с name и age ,

sameera___ 20

john_______ 22

mac_______26

john_______22

, еслимы используем уникальное ключевое слово для возраст для этого экземпляра, результат будет

sameera___20

mac______26

, но если мы используем отчетливый ключевое слово для возраст , мы получаем

sameera___20

john______22

mac______26

, удаляя только дубликаты, но не исходный .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...