这种sql怎么写呢
需求:若有mark=1和2同时存在的数据,则优先取mark=1(合并调整)的数据
List list = getByMark(1);
if list not empty
reurn list
return getByMark(2)
能否通过一条SQL语句 来实现这个目的呢
这种sql怎么写呢
需求:若有mark=1和2同时存在的数据,则优先取mark=1(合并调整)的数据
List list = getByMark(1);
if list not empty
reurn list
return getByMark(2)
能否通过一条SQL语句 来实现这个目的呢
可以呀,根据mark升序排序取第一条就行
sql支持case when的写法,不过业务建议还是别在sql处理了,代码处理没毛病的
也可以 再加个字段,标记是否主要的,查询的时候加上这个字段就行了,这样不影响性能。
具体看需求来定
select * from tb where mark=(select min(mark) from tb)
有多组数据的情况下可以使用ROW_NUMBER() OVER() 的方式根据mark字段排序设置序号,然后取第一条