我有一个表里面有性别,分别是1,2。
我希望我查询出来的数据可以交替显示
原始数据
id sex
1 1
2 1
3 1
4 1
5 2
6 1
7 2
我希望显示的结果是
id sex
1 1
5 2
2 1
7 2
3 1
4 1
6 1请高手帮帮忙
我希望我查询出来的数据可以交替显示
原始数据
id sex
1 1
2 1
3 1
4 1
5 2
6 1
7 2
我希望显示的结果是
id sex
1 1
5 2
2 1
7 2
3 1
4 1
6 1请高手帮帮忙
解决方案 »
- 请教个问题,大牛们帮忙指个路子吧,急~
- 专业的前端开发求学.net捷径
- 请问.net 3.5有那些开源的项目
- asp.net网站的默认命名空间如何修改?
- 在后台如何把脚本注册到<head></head>中
- |M| 第六贴:总共450分:事件委托总:在过程中如何进行事件委托
- 用EXCEL application 创建EXCEL文档不能打开的问题
- 数据库中是datetime的数据类型,我怎样取出时只有年月日的效果比较好?
- 请问关于Microsoft Project里的VBA
- c#里面获取对方使用post方式传递的数据
- 初学做项目的困惑
- 怎样允许临时窗口弹出,我要用js重新打开一窗口,但浏览器会阻止弹出新窗口,这在程序中可以解决吗??
from
(
select rr,sex,rownum rnn
from
(
select rr,sex
from
(
select 1 rr,1 sex from dual
union
select 2,1 from dual
union
select 3,1 from dual
union
select 4,1 from dual
union
select 5,2 from dual
union
select 6,1 from dual
union
select 7,2 from dual
)
order by sex
)
where sex =1unionselect rr,sex,rownum
from
(
select rr,sex
from
(
select 1 rr,1 sex from dual
union
select 2,1 from dual
union
select 3,1 from dual
union
select 4,1 from dual
union
select 5,2 from dual
union
select 6,1 from dual
union
select 7,2 from dual
)
order by sex
)
where sex =2
)
order by rnn,sex
1:获取记录集,该记录集条件为男性,显示字段 id,sex,rownum(rownum:oracle中的虚字段,用于显示返回记录集的行号)
2:获取记录集,该记录集条件为女性,显示字段 id,sex,rownum(rownum:oracle中的虚字段,用于显示返回记录集的行号)
3:将1、2获取的记录集通过union联合
4:由3记录集获取所需记录,并按照“rownum””sex“排序
from
(
select rr,sex,rownum rnn
from
(
select rr,sex
from
(
select 1 rr,1 sex from dual
union
。。
---------
这种写法肯定不行的,如果数目上百了?这样弄是很没效率且不通用的。要不你就分别先查询男和女的然后利用程序依次填充到一个新的datatable里面去!
1:获取记录集,该记录集条件为男性,显示字段 id,sex,rownum(rownum:oracle中的虚字段,用于显示返回记录集的行号)
2:获取记录集,该记录集条件为女性,显示字段 id,sex,rownum(rownum:oracle中的虚字段,用于显示返回记录集的行号)
3:将1、2获取的记录集通过union联合
4:由3记录集获取所需记录,并按照“rownum””sex“排序
-------
前面都是废话,“并按照“rownum””sex“排序”又没说清楚,仅仅排序就行了?
你说的那屁话不是废话?会说人话你就放声,不会说就滚2B车车的谁叫你一个记录一个记录union的?
看不懂
select 1 rr,1 sex from dual
union
select 2,1 from dual
union
select 3,1 from dual
union
select 4,1 from dual
union
select 5,2 from dual
union
select 6,1 from dual
union
select 7,2 from dual
是用来替换临时表的么?为了帮LZ答疑我在自己数据库里创建一个表?我是不是闲大发了?山货,回去多看基本书再来B呲!2!!
---
可以先这样来弄!将所有男的放到一个datatable,所有女的放到另外一个datatable,然后遍历男的或者女的,对照着另外性格的datatable来填充到新的datatable
你说的那屁话不是废话? 会说人话你就放声,不会说就滚 2B车车的 谁叫你一个记录一个记录union的?
看不懂
select 1 rr,1 sex from dual
union
select 2,1 from dual
union
select 3,1 from dual
union
select 4,1 from dual
union
select 5,2 from dual
union
select 6,1 from dual
union
select 7,2 from dual
是用来替换临时表的么? 为了帮LZ答疑我在自己数据库里创建一个表?我是不是闲大发了? 山货,回去多看基本书再来B呲! 2!!
---------------------
对此也不做回复了,一点素质都没有,楼主自行选择咯。
from
(--记录集A
select id,sex,rownum rn
from mytemptable
where sex = 1union--记录集B
select id,sex,rownum rn
from mytemptable
where sex = 2
)
order by rn,sexmytemptable 就是你存放记录的表你可以酌情根据需要,将“记录集A”"记录集B“按需要增加条件 较少数据数量,来提升展示效率建议你根据你DBMS,到相应板块去提问,效率高 回复“素质”也高,呵呵
2 用数据本身的sql来实现肯定会比较繁杂,一个是不利于调试和开发,二个是以后维护了?程序能尽量简单就简单。
结论:建议你不要费精力实现这个要求了。
declare @temp table(id int identity(1,1),sex int)declare @i int
set @i=0
while(@i<10)
begin
insert @temp(sex) values(@i%2+1)
set @i=@i+1
end
--select * from @tempdeclare @tempG table(tempID int identity(1,2),id int,sex int)
declare @tempB table(tempID int identity(2,2),id int,sex int)
insert into @tempG(id,sex) select id,sex from @temp where sex=1
insert into @tempB(id,sex) select id,sex from @temp where sex=2select id,sex from (select * from @tempG
union all
select * from @tempb) as tt order by tempID
笨方法!
使用两个容器分别将男和女的数据存储,然后交错往一个新的容器里面放。List<T> man=new List<T>();
List<T> woman=new List<T>();
List<T> data=new List<T>();
for(int i=0;i<woman.count;i++){
data.add(man[i]);
data.add(woman[i]);
}
man=null;
woman=null;这样做的前提是man 和woman的数量一致。