我已經寫在SQL Server 2005中此查詢,但它仍然會顯示的是相同的!謝謝產品名稱DISTINCT關鍵字2005
SELECT DISTINCT ProductName
FROM Products,Suppliers
WHERE Products.SupplierID = Suppliers.SupplierID AND Fax IS NULL
比如我有兩個產品名稱相同的'i'而不是返回一個'che'它將返回他們兩個
我已經寫在SQL Server 2005中此查詢,但它仍然會顯示的是相同的!謝謝產品名稱DISTINCT關鍵字2005
SELECT DISTINCT ProductName
FROM Products,Suppliers
WHERE Products.SupplierID = Suppliers.SupplierID AND Fax IS NULL
比如我有兩個產品名稱相同的'i'而不是返回一個'che'它將返回他們兩個
你發佈的內容應該可以正常工作。
是否有可能您正在選擇其他類似的東西?
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
how shou LD它選擇'ID'在獨特混合表中的測試?因此,它爲您提供了所有您請求的數據的全部DISTINCT組合。
即
Mixed:
ID Name
4 Random
3 Other
2 Test
1 Test
productID是唯一的! – user355002 2010-06-21 04:26:13
在產品表中有時我有3個不同的產品名稱與一個supplierID,但每個產品名稱都有其自己的產品ID – user355002 2010-06-21 04:27:33
和這些3個產品名稱中的某些時間,其中兩個彼此相同 – user355002 2010-06-21 04:28:22
選項:
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?
)
這是一個有趣的做事方式,但它會優化以及內部連接?這是無關緊要的,因爲我非常確定OP正在嘗試根據一個DISTINCT選擇多個列,但我仍然很好奇。 – 2010-06-21 04:57:40
@格拉辛:通常情況下會更好,因爲你不需要DISTINCT。 http://stackoverflow.com/questions/2019958/joins-exists-or-in-which-is-better-few-questions-on-sql/2081909#2081909 http://stackoverflow.com/questions/1001543/in -vs-join-with-large-rowsets/1001578#1001578 http://stackoverflow.com/questions/991934/rewrite-t-sql-from-using-in-to-using-join-where/992338#992338 – gbn 2010-06-21 06:15:51
很好 - 謝謝澄清 – 2010-06-21 06:36:44
給我們的例子請 – gbn 2010-06-21 04:22:16
你是說你有一個「衛生經濟研究所」和一個「衛生經濟研究所」,和它的返回兩者兼而有之?如果是這樣,則您安裝了一個區分大小寫的排序規則。 – Gabe 2010-06-21 04:59:37