数据库问题

sql server数据库,假如有有一张表有两列,ID和姓名,这个排序规则是这样的,当插入姓名与表中原有数据不重复的情况下,会按照ID大小进行排序。如果插入的姓名与原表格数据相同,则按照姓名,ID进行排序,这个怎么写?

FineReport 帆软用户p9k8MX4NIW 发布于 2023-9-6 11:40
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2023-9-6 11:51

select * from tb 

${if(count(sql("FRDemo","select DISTINCT 姓名 from tb",1,1))=count(sql("FRDemo","select 姓名 from tb",1,1)),"order by ID","order by 姓名,ID")}

根据去重后长度是否相等判断是否有重复值

  • 帆软用户p9k8MX4NIW 帆软用户p9k8MX4NIW(提问者) 只是一个纯数据库排序问题,不涉及帆软
    2023-09-07 08:24 
  • 用户k6280494 用户k6280494 回复 帆软用户p9k8MX4NIW(提问者) 你写在帆软数据集不就行了
    2023-09-07 08:52 
  • 帆软用户p9k8MX4NIW 帆软用户p9k8MX4NIW(提问者) 回复 用户k6280494 我不写在帆软数据集,里面写在数据库存储过程里面,然后帆软调用存储过程
    2023-09-07 09:37 
  • 用户k6280494 用户k6280494 回复 帆软用户p9k8MX4NIW(提问者) 那就在存储过程判断啊,把if里面的语句,放到存储过程得if里面去
    2023-09-07 09:39 
  • 用户k6280494 用户k6280494 回复 帆软用户p9k8MX4NIW(提问者) 原理都一样
    2023-09-07 09:40 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-9-6 11:41(编辑于 2023-9-6 12:38)

我想简单了?

SELECT * FROM TABLE  ORDER BY 姓名,ID 

------------

with a as (

select 1 [id],'张三' [姓名]

union ALL

select 2 [id],'李四' [姓名]

union ALL

select 3 [id],'王五' [姓名]

union ALL

select 4 [id],'赵六' [姓名]

union ALL

select 5 [id],'王五' [姓名]

union ALL

select 6 [id],'李四' [姓名]

union ALL

select 7 [id],'张三' [姓名]

)

SELECT * FROM (

SELECT A.*,B.id [NEW_] FROM A INNER JOIN (

SELECT 姓名,MIN(id) [id] FROM A group by 姓名 ) B ON A.姓名=B.姓名

) T ORDER BY NEW_,姓名,id

image.png

  • 帆软用户p9k8MX4NIW 帆软用户p9k8MX4NIW(提问者) 是你想简单了,会根据插入的姓名与原表中的姓名是否重复,排序规则是不一样的
    2023-09-06 11:46 
  • Z4u3z1 Z4u3z1 回复 帆软用户p9k8MX4NIW(提问者) 是上面补充的那样么?
    2023-09-06 12:39 
最佳回答
0
ID1208Lv6高级互助
发布于2023-9-6 11:45(编辑于 2023-9-6 11:57)

case  when??

select * from 表 case when  A  then  order  by  AA   else order by BB  end

另外在填报的时候,判断一下是否重复,往数据库字段flag里面打个标记

  • Z4u3z1 Z4u3z1 姓名相同的分开了....
    2023-09-06 11:47 
  • 3关注人数
  • 223浏览人数
  • 最后回答于:2023-9-6 12:38
    请选择关闭问题的原因
    确定 取消
    返回顶部