weixin_40836203
三哥_可以用微笑掩盖一切
采纳率0%
2017-11-06 05:49

sql 查询语句的排序问题:使用in的内容排序,怎么写

select * from tab where id IN(123,432,654,142,232,901,113) ;
这样查出来的结果是按照id的顺序排列的,
我想要结果按照IN(123,432,654,142,232,901,113) 的先后顺序排,怎么写?

我使用的是postgre 数据库。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

12条回答

  • chenqianfang 前方丶 4年前

    可以用order by (CASE WHEN pc.is_pack in(0,1) THEN 0 ELSE 1 END)这种来排序,不过如果in里面的id是动态的,或者太多,就没办法了

    点赞 评论 复制链接分享
  • xianpeifu2866 就一小白攻城狮 3年前

    注:此函数只适用于Oracle数据库

    点赞 评论 复制链接分享
  • xianpeifu2866 就一小白攻城狮 3年前

    我来装个b,使用instr函数轻松解决;
    下面是演示demo:
    select * from tab where id IN(123,432,654,142,232,901,113) order by instr (id,'123,432,654,142,232,901,113') ;

    尝试成功的同学记得回来赞我哦,有不懂的请在下方留言!!!

    点赞 评论 复制链接分享
  • weixin_40836203 三哥_可以用微笑掩盖一切 4年前

    试过了不行啊
    select * FROM goods_detail WHERE goods_id IN (4512,4544,4533)
    ORDER BY decode(goods_id,'4512',1,'4544',2,'4533',3) DESC;

    [Err] ERROR: column "id" does not exist
    LINE 2: ORDER BY decode(ID,'4512',1,'4544',2,'4533',3) DESC;

    点赞 评论 复制链接分享
  • weixin_34258649 丶程序猿 4年前

    使用decode进行按规则排序
    例如: abc cdb acf abm
    按此顺序 abc acf abm cdb 排列

    order by decode(id,'abc',1,'acf',2,'abm',3,'cdb',4) [asc,desc]

    点赞 评论 复制链接分享
  • weixin_40417658 数据甄小白 4年前

    order by 后面跟decode 或者case when 然后对你想要的排序赋值1,2,3就可以了

    点赞 评论 复制链接分享
  • qq_39683470 糖果是香草味的 4年前

    order by id 就可以了。至于是升序用asc,降序desc。默认是升序的

    点赞 评论 复制链接分享
  • cxy20170309 Ice_Blue_Brother 4年前

    在sql里面用for循环?

    点赞 评论 复制链接分享
  • msx985211 创业的鱼 4年前

    我个人感觉者需求不太合理啊,是什么原因要让你这样排序啊

    点赞 评论 复制链接分享
  • u013090676 暮之雪 4年前

    为什么不对查询的结果集做一次排序呢?

    点赞 评论 复制链接分享
  • qq_37511501 生活如水 4年前

    in 只是查询条件而已,所以正常来说还是 order by id 就行了

    点赞 评论 复制链接分享
  • weixin_40836203 三哥_可以用微笑掩盖一切 4年前

    试了你们的办法,都行不通,虽然麻烦,我还是使用java代码实现了

    点赞 评论 复制链接分享

相关推荐