只用到一个表sellers
id seller product keyword price
1 沃尔玛 泰国稻米得大米 大米 6
2 沃尔玛 东北小麦粉 麦 3
3 百佳 东北大米 大米 3
4 家乐福 东北大米 大米 3.2
5 好又多 超级小麦面粉 麦 3.5
6 永辉 湖北大米 米 2.8
我想查出这个表里每一类价格最便宜的行,也即字段product值中包含了字段keyword值的结果中价格最便宜的行,比如这个表里出来的结果就是以下两行结果
6 永辉 湖北大米 米 2.8
2 沃尔玛 东北小麦粉 麦 3
这个语句怎么写?谢谢!!
------解决方案--------------------
----------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-05-09 21:34:48
-- Version:
-- Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86)
-- Jun 17 2011 00:57:23
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[sellers]
if object_id('[sellers]') is not null drop table [sellers]
go
create table [sellers]([id] int,[seller] varchar(6),[product] varchar(14),[keyword] varchar(4),[price] numeric(2,1))
insert [sellers]
select 1,'沃尔玛','泰国稻米得大米','大米',6 union all
select 2,'沃尔玛','东北小麦粉','麦',3 union all
select 3,'百佳','东北大米','大米',3 union all
select 4,'家乐福','东北大米','大米',3.2 union all
select 5,'好又多','超级小麦面粉','麦',3.5 union all
select 6,'永辉','湖北大米','米',2.8
--------------开始查询--------------------------
SELECT *
FROM [sellers] a
WHERE EXISTS(SELECT 1 FROM (
select [keyword],MIN([price])[price]
from [sellers]
GROUP BY [keyword]) b WHERE a.[keyword]=b.[keyword] AND a.[price]=b.[price])