select top 1 price from t order by case when name='奶油面包' then 0 when charindex(name,'奶油面包')>0 then 1 when charindex(left(name,1),'奶油面包')>0 then 2 else 3 end
select price=isnull(price,(select price= isnull(price,(select price from ta where name='面粉')) from ta where name='面包')) from ta where name='奶油面包'
select price=(case when price='' then seelct price=(case price='' then select price from itemprice where name='面粉' else price) from itemprice where name='面包' else price) from itemprice where name='奶油面包'
建立一个价格取数顺序表,或者在原表增加一个取价顺序就可以了英文名 中文名 价格 价格顺序 ------------- ---------- ------ --------- flour 面粉 1.50 1 bread 面包 4.00 2 milkbread 奶油面包 4.20 3取价格 select top 1 价格 from tb where isnull(价格,0)>0 and 价格顺序<=(select 价格顺序 from tb where 中文名='奶油面包') order by 价格顺序 desc
order by case when name='奶油面包' then 0
when charindex(name,'奶油面包')>0 then 1
when charindex(left(name,1),'奶油面包')>0 then 2
else 3
end
isnull(price,(select price from ta where name='面粉'))
from ta where name='面包'))
from ta where name='奶油面包'
饮料>可乐>百事可乐,数据库哪里知道百事可乐属于 可乐 还是 牛奶 呀据我推测,楼主的数据库里应该还有一个分类表吧
比如 白事可乐 属于 可乐类, 可乐 属于 饮料类如果要写个通用的,还要参考一下分类表了
------------- ---------- ------ ---------
flour 面粉 1.50 1
bread 面包 4.00 2
milkbread 奶油面包 4.20 3取价格
select top 1 价格 from tb
where isnull(价格,0)>0 and 价格顺序<=(select 价格顺序 from tb where 中文名='奶油面包')
order by 价格顺序 desc