若有2个取值 优先取其中一个的SQL怎么写

zgw06629 发布于 04/12 15:28
阅读 1K+
收藏 0
sql

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

这种sql怎么写呢 

需求:若有mark=1和2同时存在的数据,则优先取mark=1(合并调整)的数据

List list  = getByMark(1);

if list not empty

    reurn list

return getByMark(2)

能否通过一条SQL语句 来实现这个目的呢

 

加载中
0
zhuweihong
zhuweihong

可以呀,根据mark升序排序取第一条就行

0
1
1767028198

sql支持case when的写法,不过业务建议还是别在sql处理了,代码处理没毛病的

0
kis龍
kis龍

select (case when  xxx = 1 when xxx else '' end) xxx from tb  -- group by  一般需要加上 group by, 也可以试试看其他方式

也可以 再加个字段,标记是否主要的,查询的时候加上这个字段就行了,这样不影响性能。

 

具体看需求来定

0
t
tkhlo

select * from tb where mark=(select min(mark) from tb)

-2
我不会武术

有多组数据的情况下可以使用ROW_NUMBER() OVER() 的方式根据mark字段排序设置序号,然后取第一条

select mark from (select ROW_NUMBER() OVER(ORDER BY mark asc) AS NUM,mark from A ) AS T1 WHERE NUM=1

 

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部