Ключевое слово DISTINCT в SQL Server 2005 - PullRequest
0 голосов
/ 21 июня 2010

Я написал этот запрос в SQL Server 2005, но он по-прежнему будет отображать названия одинаковых продуктов! Спасибо

SELECT  DISTINCT ProductName 
FROM Products,Suppliers 
WHERE Products.SupplierID = Suppliers.SupplierID AND Fax IS NULL

например, у меня есть два названия продуктов, которые имеют одинаковый 'Chei', вместо того, чтобы вернуть один 'chei', он вернет оба из них

Ответы [ 2 ]

1 голос
/ 21 июня 2010
  • Если вы используете EXISTS, вам не нужно иметь DISTINCT
  • ANSI PADDING означает, что у вас могут быть завершающие пробелы: но почему ProductName повторяется?* фактический запрос?
  • Использовать правильный синтаксис JOIN

Параметры:

SELECT --DISTINCT if you need RTRIM
    P.ProductName  --RTRIM(ProductName, '')
FROM
    Products P
WHERE
    EXISTS (SELECT *
        FROM
           Suppliers S
        WHERE
           P.SupplierID = S.SupplierID
           AND
           Fax IS NULL -- belongs to Suppliers?
             )
1 голос
/ 21 июня 2010

То, что вы опубликовали, должно работать нормально.

Возможно, вы выбираете другие вещи, подобные этой?

SELECT  DISTINCT ProductName, ProductId 
FROM Products,Suppliers 
WHERE Products.SupplierID = Suppliers.SupplierID AND Fax IS NULL 

В качестве альтернативы, вы должны написать это так (но этоне поможет вам, если вы выбираете несколько столбцов).

SELECT  DISTINCT ProductName 
FROM Products 
INNER JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID 
WHERE Fax IS NULL 

Если вы не уверены, почему выбор нескольких столбцов не будет работать:

SELECT  DISTINCT ProductName, ProductId
FROM Products 
INNER JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID 
WHERE Fax IS NULL 

Просто подумайте об этомследующий момент:

Products table:
ID  Name
1   Test
2   Test
3   Other
4   Random

Вы хотите:

Mixed:
ID  Name
4   Random
3   Other
?   Test

Как выбрать этот 'id' для Test в смешанной таблице Distinct?Таким образом, он дает вам все DISTINCT комбинации всех данных, которые вы просили.

т.е.

Mixed:
ID  Name
4   Random
3   Other
2   Test
1   Test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...