日期:2014-05-18  浏览次数:20575 次

如何先列出某一字段不重复的记录再列其它记录
举例说明:
a b c

1 2 3
2 4 2
3 3 5
4 2 4
5 4 1
6 2 5

  我希望先返回字段b不重复的记录,如果记录少于5个,则继续列出其它记录(最好字段b值尽量不同)。我希望的结果是这样:
1 2 3
3 3 5
2 4 2
4 2 4
5 4 1

  我现在写的语句是:
select * from Price where (好几个组合条件) and PriceID in(select min(PriceID) from Price group by Brand) order by
  Brand是我希望尽量不重复的字段,PriceID是标识字段,我想要返回记录里的所有字段值。上面的语句只能返回Brand不重复的记录,有时候总数很少,我希望这种情况下能再返回其它记录,记录总数为20个。

------解决方案--------------------
select *
from T
where b in
(
select b
from T
group by b
having count(*) = 1
)
------解决方案--------------------
每天回帖即可获得10分可用分!