2014-09-02 50 views
-3

我想獲得唯一的值表格表。但所有的價值觀都應該是獨一無二如何在SQL Server中使用不同列表的所有列

所以建議如何得到。

SELECT DISTINCT ProCode 
      , id,SubCat 
      ,SmlImgPath 
      ,RupPrice 
      ,ActualPrice 
      ,ProName 
FROM product 
WHERE ProCode='FZ10003-EBA'; 
+1

'DISTINCT'始終適用於所有**列值** - 不知道你的意思.... – 2014-09-02 11:07:14

+2

我認爲,沒有人迄今已擁有你在說什麼的想法。請顯示樣本數據和期望的輸出。 – 2014-09-02 11:11:15

+0

從下面粘貼的數據看來,您似乎在多個子類別中具有相同的產品代碼。你設計的表格設計不好,不符合標準化。 – CaRDiaK 2014-09-02 11:23:50

回答

0

DISTINCT指的是所有選定的列,所以答案是你的SELECT已經做到了。

編輯:

看來你的問題是不相關的DISTINCT。你想要的是當你的搜索返回多行時得到一行。

如果你不關心你在哪一行,那麼你可以使用:

MS SQL Server語法:

SELECT TOP 1 ProCode 
      , id,SubCat 
      ,SmlImgPath 
      ,RupPrice 
      ,ActualPrice 
      ,ProName 
FROM product 
WHERE ProCode='FZ10003-EBA'; 

MYSQL語法:

SELECT ProCode 
      , id,SubCat 
      ,SmlImgPath 
      ,RupPrice 
      ,ActualPrice 
      ,ProName 
FROM product 
WHERE ProCode='FZ10003-EBA' 
LIMIT 1; 

甲骨文語法:

SELECT ProCode 
      , id,SubCat 
      ,SmlImgPath 
      ,RupPrice 
      ,ActualPrice 
      ,ProName 
FROM product 
WHERE ProCode='FZ10003-EBA' 
    AND rownum <= 1; 
+0

它沒有顯示單個值 – 2014-09-02 11:08:00

+0

請從表 – Wanderer 2014-09-02 11:08:20

+0

FZ10003-EBA \t〜/產品/名人/康嘉娜·拉洛/ FZ10003-EBA-sm.jpg FZ10003提供一些行-EBA \t〜/產品/ salwar沙麗克米茲/設計師品牌/ FZ10003-EBA-sm.jpg FZ10003-EBA \t〜/產品/ salwar沙麗克米茲/晚會款式/ FZ10003-EBA-sm.jpg – 2014-09-02 11:08:56

0

(有一天我也許能夠發表評論!)

SQLFiddle to show normal, distinct and returning a single row

SELECT DISTINCT作品不錯,但它不工作,你希望它的工作方式。從您在Klas'答案下的評論中發佈的數據中可以清楚地看到,當列中某處存在數據差異時,您希望獲得單一結果。例如

/Products/CELEBRITY/KANGANA 

/Products/SALWAR 

完全不同,你看起來是在尋找不能與DISTINCT工作,也無法使用GROUP BY工作。基本上,只有兩行(或三行,十行或100行)纔會成爲一行,如果SELECT中ALL SEVEN COLUMNS中的數據是IDENTICAL。

退一步想想它是什麼,正是你想要在這裏實現的。

0

你是說你想要一個記錄只?這被稱爲聚合。如果有更多的記錄,然後是一個(在你的例子中是三個),你將不得不爲每一列決定顯示哪個值。

你想在結果行中看到哪個SubCat,SmlImgPath等?最大值?最低?或者字符串'各種'?舉個例子:

SELECT 
    ProCode 
    , CASE WHEN MIN(id) <> MAX(id) THEN 'various' ELSE MIN(id) END 
    , MIN(SubCat) 
    , MAX(SmlImgPath) 
    , AVG(RupPrice) 
    , AVG(ActualPrice) 
    , MAX(ProName) 
FROM product 
WHERE ProCode='FZ10003-EBA' 
GROUP BY ProCode; 
相關問題