2017-08-24 60 views
-1

我有一个产品的product_id及其高度,宽度和深度的非常简单的表格。 Product_id可以在我正在使用的表中存在多次,因此我使用了不同的语句。 但是,特定product_id的高度,宽度和深度的组合应该是唯一的。如何找到至少有一个不同尺寸的产品?

实施例下面给出: 对于PRODUCT_ID 1003它是好的,因为它只有一个维度组合(6,2,2) 对于PRODUCT_ID 1002是不行的,因为它具有尺寸的两个组合(7,3 ,3和9,3,3)

如何告诉sql只显示像1002这些记录,其中对于一个product_id我们有多个维度的组合?

非常感谢您提前寻求帮助。

回答

0

您可以使用group byhaving

select product_id 
from t 
group by product_id 
having min(height) <> max(height) or 
     min(width) <> max(width) or 
     min(depth) <> max(depth); 

如果你想在原表中的行列表,然后采用不同的方法,建议 - 使用exists

select t.* 
from t 
where exists (select 1 
       from t t2 
       where t2.product_id = t.product_id and 
        (t2.height <> t.height or t2.width <> t.width or 
        t2.depth <> t.depth 
        ) 
      ); 
+0

你好,谢谢你非常感谢你的帮助。不幸的是,第一个查询显示没有记录。高度,宽度和深度设置为“浮动”。这可以成为这个查询返回没有值的原因吗? – TylerDurden887

+0

@ TylerDurden887。 。 。有可能。如果它们表示为浮点数,看起来相同的两个值实际上可能会有很小的差异。 –

相关问题