Добавление DISTINCT в запрос UNION - PullRequest
3 голосов
/ 02 июня 2011

Как я могу получить отличные title.id от этого:

 SELECT Title.id, Title.title FROM titles as Title HAVING points > 0 
 UNION ALL 
 SELECT Title.id, Title.title FROM titles as Title HAVING points > 1

В запросе есть что-то еще, но этого должно быть достаточно для продолжения.

Ответы [ 3 ]

15 голосов
/ 02 июня 2011

Просто удалите ALL.Некоторые разновидности позволяют добавлять DISTINCT вместо ALL, чтобы быть более явным, но это избыточно, поскольку по умолчанию всегда отфильтровываются наши дубликаты.

MySQL - http://dev.mysql.com/doc/refman/5.0/en/union.html
MSSQL - http://msdn.microsoft.com/en-us/library/ms180026.aspx
ORACLE - https://docs.oracle.com/cd/B28359_01/server.111/b28286/queries004.htm
PostgreSQL - http://www.postgresql.org/docs/8.3/interactive/queries-union.html
и т. Д.

1 голос
/ 02 июня 2011

Разве не просто избавиться от союза и второй части в целом:

SELECT Title.id, Title.title FROM titles as Title HAVING points > 0 

, поскольку HAVING points > 0 включает в себя что-либо с HAVING points > 1?

0 голосов
/ 02 июня 2011

Вы можете отбросить ALL, как предлагали другие.

Если два запроса используют одни и те же таблицы и отличаются только в предложении WHERE или только в предложении HAVING, вы также можетеиспользуйте это:

SELECT Title.id, Title.title FROM titles as Title
WHERE (1st query conditions)
   OR (2nd query conditions)

или

SELECT Title.id, Title.title FROM titles as Title
HAVING (1st query conditions)
    OR (2nd query conditions)
...