Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 DISTINCT  [new]
relief
Member

Откуда:
Сообщений: 1197
почему данную конструкцию студия заворачивает?

SELECT  1, DISTINCT(Name), ModelGroup
FROM tmp_NewModels 


а такую нет?

SELECT   DISTINCT(Name), 1, ModelGroup
FROM tmp_NewModels 
9 июл 12, 15:10    [12839222]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
relief
почему данную конструкцию студия заворачивает?

SELECT  1, DISTINCT(Name), ModelGroup
FROM tmp_NewModels 


а такую нет?

SELECT   DISTINCT(Name), 1, ModelGroup
FROM tmp_NewModels 
Потому что DISTINCT пишется сразу после SELECT и относится ко всей строке целиком.
Во втором случае (Name) - это просто колонка Name, ибо скобки ничего не меняют (лишние, проще говоря)
9 июл 12, 15:13    [12839249]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
Troglodit
Member

Откуда:
Сообщений: 505
DISTINCT -это не функция.
SELECT DISTINCT Name,1, ModelGroup
FROM tmp_NewModels
Фактически ваш запрос равен этому.
SELECT DISTINCT(Name), 1, ModelGroup
FROM tmp_NewModels -ошибочный запрос.
9 июл 12, 15:13    [12839254]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
relief
Member

Откуда:
Сообщений: 1197
iap
relief
почему данную конструкцию студия заворачивает?

SELECT  1, DISTINCT(Name), ModelGroup
FROM tmp_NewModels 


а такую нет?

SELECT   DISTINCT(Name), 1, ModelGroup
FROM tmp_NewModels 
Потому что DISTINCT пишется сразу после SELECT и относится ко всей строке целиком.
Во втором случае (Name) - это просто колонка Name, ибо скобки ничего не меняют (лишние, проще говоря)



т.е. вы хотите сказать, что по факту мой запрос равен ?
мне просто непонятно как работает distinct в данном случае.
т.е. мне надо выбрать уникальные имена, но к ним прицепить еще 2 столбца

SELECT   DISTINCT(Name)
FROM tmp_NewModels 
9 июл 12, 15:19    [12839291]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4973
relief
.
т.е. мне надо выбрать уникальные имена, но к ним прицепить еще 2 столбца

SELECT   DISTINCT(Name)
FROM tmp_NewModels 

Придется написать запрос по-другому, ибо DISTINCT не подойдет для вашей задачи.
9 июл 12, 15:24    [12839321]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
relief
Member

Откуда:
Сообщений: 1197
Megabyte
relief
.
т.е. мне надо выбрать уникальные имена, но к ним прицепить еще 2 столбца

SELECT   DISTINCT(Name)
FROM tmp_NewModels 

Придется написать запрос по-другому, ибо DISTINCT не подойдет для вашей задачи.


а для понимания можете объяснить логику работы данного запроса?
SELECT   DISTINCT(Name), 1, ModelGroup
FROM tmp_NewModels 
9 июл 12, 15:26    [12839348]     Ответить | Цитировать Сообщить модератору
 Re: DISTINCT  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
relief
т.е. вы хотите сказать, что по факту мой запрос равен ?
Что?!
relief
мне просто непонятно как работает distinct в данном случае.
т.е. мне надо выбрать уникальные имена, но к ним прицепить еще 2 столбца
Я ж написал, что DISTINCT оставляет только записи, все поля которых образуют уникальную комбинацию.
Поскольку из результата исчезают записи, полностью совпадающие с какой-то возращённой, проблем не возникает

А Вас понять сложно:

  • надо выбрать только записи с уникальным Name?
  • надо выбрать по одной записи для каждого Name, обеспечив уникальность в результате?

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

    Версия сервера какая?
  • 9 июл 12, 15:28    [12839363]     Ответить | Цитировать Сообщить модератору
     Re: DISTINCT  [new]
    Troglodit
    Member

    Откуда:
    Сообщений: 505
    SELECT name from (SELECT   DISTINCT Name as name
    FROM tmp_NewModels ) as table 1
    inner join table2 on ...
    

    Для тех кто в танке
    DISTINCT не применяется только к одному полю,а ко всем сразу без вариантов.
    9 июл 12, 15:35    [12839434]     Ответить | Цитировать Сообщить модератору
     Re: DISTINCT  [new]
    relief
    Member

    Откуда:
    Сообщений: 1197
    iap
    relief
    т.е. вы хотите сказать, что по факту мой запрос равен ?
    Что?!
    relief
    мне просто непонятно как работает distinct в данном случае.
    т.е. мне надо выбрать уникальные имена, но к ним прицепить еще 2 столбца
    Я ж написал, что DISTINCT оставляет только записи, все поля которых образуют уникальную комбинацию.
    Поскольку из результата исчезают записи, полностью совпадающие с какой-то возращённой, проблем не возникает

    А Вас понять сложно:

  • надо выбрать только записи с уникальным Name?
  • надо выбрать по одной записи для каждого Name, обеспечив уникальность в результате?

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

    Версия сервера какая?


  • сервер - 2005

    надо выбрать только записи с уникальным Name?, но надо еще видеть 2 столбца, уникальность по которым проверять не надо
    9 июл 12, 15:42    [12839495]     Ответить | Цитировать Сообщить модератору
     Re: DISTINCT  [new]
    Гавриленко Сергей Алексеевич
    Member

    Откуда: Moscow
    Сообщений: 37143
    relief
    надо выбрать только записи с уникальным Name?, но надо еще видеть 2 столбца, уникальность по которым проверять не надо
    И что в этих столбцах должно быть? Первое значение для имени, последнее, через запятую все перечислены?
    9 июл 12, 15:43    [12839508]     Ответить | Цитировать Сообщить модератору
     Re: DISTINCT  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47047
    Гавриленко Сергей Алексеевич
    relief
    надо выбрать только записи с уникальным Name?, но надо еще видеть 2 столбца, уникальность по которым проверять не надо
    И что в этих столбцах должно быть? Первое значение для имени, последнее, через запятую все перечислены?
    Судя по последнему ответу, наджо выбрать неповторяющиеся в таблице Name вместе с остальными полями
    9 июл 12, 15:47    [12839534]     Ответить | Цитировать Сообщить модератору
     Re: DISTINCT  [new]
    SanSYS
    Member

    Откуда:
    Сообщений: 1879
    SELECT count(*), Name, 1, ModelGroup
    FROM tmp_NewModels 
    group by Name, 1, ModelGroup
    
    9 июл 12, 15:49    [12839550]     Ответить | Цитировать Сообщить модератору
     Re: DISTINCT  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47047
    ;WITH CTE AS(SELECT C=CONT(*)OVER(PARTITION BY Name),* FROM tmp_NewModels)
    SELECT * FROM CTE WHERE C=1;
    
    9 июл 12, 15:50    [12839554]     Ответить | Цитировать Сообщить модератору
     Re: DISTINCT  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47047
    Опечатка
    iap
    ;WITH CTE AS(SELECT C=CONT(*)OVER(PARTITION BY Name),* FROM tmp_NewModels)
    SELECT * FROM CTE WHERE C=1;
    
    ;WITH CTE AS(SELECT C=COUNT(*)OVER(PARTITION BY Name),* FROM tmp_NewModels)
    SELECT * FROM CTE WHERE C=1;
    
    9 июл 12, 15:51    [12839563]     Ответить | Цитировать Сообщить модератору
     Re: DISTINCT  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47047
    SanSYS
    SELECT count(*), Name, 1, ModelGroup
    FROM tmp_NewModels 
    group by Name, 1, ModelGroup
    
    Какой смысл в единице в GROUP BY?
    9 июл 12, 15:56    [12839601]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить