如果两个行在列中具有相同的值并且前五个字符相同,则过滤自联接查询

时间:2015-11-30 17:25:00

标签: sql database join sql-server-2012

我使用自联接

执行了以下查询
Product_ID  Parent_Product_ID Prodcut_Name 
311        311             Trench
353        353             Blended wool
353        353             Blended wool polyester
355        355             Faux fur
357        357             Quilted 
358        358            Jackets-Polyester
359        359            Jackets-Wool

这是结果

353        353             Blended wool
353        353             Blended wool polyester

我想通过

过滤上面的结果

a)Product_ID = Parent_Prodcut_ID,如果两列中的行具有相同的值。 这里的结果应该是

353        353             Blended wool
353        353             Blended wool polyester
358        358            Jackets-Polyester
359        359            Jackets-Wool

b)如果Product_name中的前五个字符相同,则结果应为

{{1}}

1 个答案:

答案 0 :(得分:0)

只需将这些条件添加到on子句中(哦,您的查询也应该具有此条件):

SELECT a.Product_ID , b.Parent_Product_ID, b.Product_Name 
FROM Product a JOIN
     Product b
     ON a.Product_ID = b.Parent_Product_ID AND
        a.product_name = b.product_name;

第二个:

SELECT a.Product_ID , b.Parent_Product_ID, b.Product_Name 
FROM Product a JOIN
     Product b
     ON a.Product_ID = b.Parent_Product_ID AND
        LEFT(a.product_name, 5) = LEFT(b.product_name, 5);

如果您的数据库没有LEFT()功能,请改用SUBSTR() / SUBSTRING()

相关问题