假设我们有一个Product表用于存储每个Product的信息,每个Product有一个唯一标识Product_ID和一个不唯一的Product_Name。由于不同的Product可能重名,倘若我们有这样的一个需求:需要将重名的记录(除了具有最小ID的那个)删除,从而保证其名称的唯一性。我们来看看如何保这些需要上出的记录筛选出来。Product表的记录如下,ID为1和4的两条记录重名,现在我们的目的是把ID为4的记录筛选出来。
sql语句是:(1)
SELECT *
FROM dbo.PRODUCT
WHERE PRODUCT_ID NOT IN
(
SELECT MIN(PRODUCT_ID)
FROM dbo.PRODUCT p
WHERE dbo.PRODUCT.PRODUCT_NAME = p.PRODUCT_NAME
)
(2)
select min(PRODUCT_ID) as id,p.PRODUCT_NAME from product p group by PRODUCT_NAME