如何按指定的顺序获取数据

数据

原贴地址:http://community.csdn.net/Expert/topic/3693/3693091.xml?temp=.6086542

测试table
create table table1 (id int,name char)
insert into table1
select 1,'q'
union all select 2,'r'
union all select 3,'3'
union all select 4,'5'

要求按指定的id顺序(比如2,1,4,3)排列获取table1的数据

方法1:使用union all,但是有256条数据的限制
select id,name from table1 where id=2
union all
select id,name from table1 where id=1
union all
select id,name from table1 where id=4
union all
select id,name from table1 where id=3

方法2:在order by中使用case when
select id ,name from t where id in (2,1,4,3)
order by (case id
                      when 2 then 'A'
                      when 1 then 'B'
                      when 4 then 'C'
                      when 3 then 'D' end)

*以上两种方法适合在数据量非常小的情况下使用

方法3:使用游标和临时表
先建一个辅助表,里面你需要的顺序插入,比如2,1,4,3
create table t1(id int)
insert into t1
select 2
union all select 1
union all select 4
union all select 3

declare @id int                              --定义游标
declare c_test cursor for
select id from t1                       

select * into #tmp from table1 where 1=2     --构造临时表的结构

OPEN c_test

FETCH NEXT FROM c_test
INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
--按t1中的id顺序插数据到临时表
insert into #tmp select id,name from table1 where id=@id  
FETCH NEXT FROM c_test  INTO @id
End
Close c_test                  
deallocate c_test

*该方法适合需要按照辅助表的顺序重排table的顺序时使用
(即辅助表已经存在的情况)

方法4:分割字符串参数
select * into #tmp from table1 where 1=2 --构造临时表的结构

declare  @str  varchar(300),@id  varchar(300),@m  int,@n  int 
set  @str='2,1,4,3,'      ---注意后面有个逗号
set  @m=CHARINDEX(',',@str) 
set  @n=1 
WHILE  @m>0 
BEGIN 
       set  @id=substring(@str,@n,@m-@n) 
       --print  @id 
       insert into #tmp select id,name from table1 where id=convert(int,@id)
       set  @n=@m+1 
       set  @m=CHARINDEX(',',@str,@n) 
END 

*该方法比较有通用性

测试结果
id          name
----------- ----
2           r
1           q
4           5
3           3

(所影响的行数为 4 行)

时间: 2024-11-02 21:03:34

如何按指定的顺序获取数据的相关文章

oracle中从指定日期中获取月份或者部分数据

  从指定日期中获取部分数据: 如月份: select to_CHAR(sysdate,'MM') FROM DUAL; 或者: select extract(month from sysdate) from dual; 又或者最笨的方法,用to_char()先把日期转化为指定格式的字符串,在通过substr()这个取到想要的数据. select substr(to_char(sysdate,'yyyy-mm-dd'),6,2) from dual; 获取日期其它部分数据和上方法一样.

jquery-jqgrid获取数据,怎么更改排列顺序呢?

问题描述 jqgrid获取数据,怎么更改排列顺序呢? 获取数据的顺序,是在哪里选择的? 解决方案 获取数据数据的循序?什么意思?没看明白要问什么 点击列表头可以进行排序,如果是远程数据会发送sord=asc/desc到服务器,你需要获取sord参数后在服务器排序后输出 解决方案二: 顺序是你后台组织好传给前台的,要组织,在后台组织,或者前台接到后,解析成数组或List,按自己的规则排序 解决方案三: 得满足排序条件吧, 比如ID啊, 时间啊等等....

查询结果-db2 获取指定时间与前一天数据差值,求解决

问题描述 db2 获取指定时间与前一天数据差值,求解决 比如 days x y 2014-03-30 1550 2000 2014-04-01 1600 2100 2014-04-02 1700 2200 2014-04-03 1850 2300 查询结果为 2014-04-03 150 100 2014-04-02 100 100 2014-04-01 50 100 如何写出这种sql 解决方案 参考:http://bbs.csdn.net/topics/320124504

jquery获取table指定行和列的数据方法(当前选中行、列)_jquery

实例如下: //不多说,直接上代码. $("table tr").click(function() {//为表格的行添加点击事件 var tr = $(this);//找到tr原色 var td = tr.find("td");//找到td元素 alert(td[0].innerHTML);//指定下标即可 }) 今日项目中需要用到取table选中列的数据,网上资料发现都不能获取到选中指定列的数据,通过分析测试后总结出以上代码,可以获取选中行/列的数据.取td的数据

使用AJAX异步获取数据

ajax|数据|异步 [导读]本文给出一个例子(使用AJAX异步获取数据),介绍如何去使用AJAX. AJAX这个名字看起来很神奇,我第一次见到它也被它吸引了,它是Asynchronous JavaScript and XML的简写,异步的JAVASCRIPT和XML,关于AJAX的介绍在网上的介绍太多了,我就不多那么多了,我的口才不好,没他们说的那么精彩,可以去http://zh.wikipedia.org/wiki/AJAX 看看,在这里我只是给大家一个例子,了解如何去使用AJAX. AJA

android网络编程:URL获取数据和图片

首先,开始最简单的网络编程实战,URL实现网络连接,不懂的童鞋可以参考JAVA中的URL编程,其原理是 一样的,在这里不再多做解释. 直接贴出实现源代码: public class DataActivity extends Activity { private EditText imagePathText; private static final String TAG="DataActivity"; private ImageView imageView; @Override pub

C# DataTable中查询指定字段名称的数据

这篇文章主要介绍了C# DataTable中查询指定字段名称的数据,本文直接给出实例代码,简单易懂,需要的朋友可以参考下 1.查询后获取对应的数据集后,传递参数strcodeName,根据数据集中strcodeName的匹配对应字段,获取数据集中对应的目的字段 代码如下: private string GetStrName(DataTable dtable, string strcodeName) { string Name = strcodeName; DataRow[] dr = dtabl

java-如何在输入XXX/index.jsp加载网页前进入Action获取数据

问题描述 如何在输入XXX/index.jsp加载网页前进入Action获取数据 进入Index.jsp时 里面有需要从后台获取的数据然后显示,所以进入这个页面时不先到Action获取数据再跳转回来就会报错 请问怎么解决! 解决方案 写js,页面加载时就发ajax请求到后台,然后前端得到数据,写js给页面的元素赋值 解决方案二: 在struts里面配置好,在action加载完你想加载的数据之后,返回SUCCESS或者你指定的返回结果,这个时候通过配置文件自动会跳转到XXX/index.jsp 解

巧用COLUMNS_UPDATED获取数据变更

title: 巧用COLUMNS_UPDATED获取数据变更 author: 风移 业务场景 在平时与数据库打交道的过程中,我们经常会有这样的疑惑:如何快速的获取数据变更记录呢?举个例子,搜索引擎要为外部客人提供快速准确的商品信息搜索功能,那么当有新的商品数据变更后,搜索引擎如何快速的发现这些新的变更数据呢?我们常见的两种做法: 全量更新 这种方法最为简单直接,反正不管三七二十一,搜索引擎每次全量拉取商品信息表所有数据,然后创建搜索索引,提供给外部客人查询.这种方法实现起来的确最为简单,当然同时