2014-09-02 99 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; 
相关问题