mysql oder by排序把null的字段放在最后面

Posted 宇翊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql oder by排序把null的字段放在最后面相关的知识,希望对你有一定的参考价值。

默认情况下,mysql将null算作最小值。

使用:
if(isnull(字段名),1,0) 
说明:它的意思是将该字段根据是否为null值分成两部分,0相当于null值部分放在最后面,1相当于非null值部分放在前面,在排序的时候,先根据这一属性进行升序排列

 

select
		city_code, ins_code, organ_type, organ_name, organ_address,
		organ_access_url,
		state, longitude, latitude,
		area, organ_category, adCode, organ_catagery
		, ROUND(
		6371.393 * 2 * ASIN(
		SQRT(
		POW(
		SIN(
		(
		#{latitude,jdbcType=DOUBLE}
		* PI() / 180 - latitude * PI() / 180
		) / 2
		),
		2
		) +
		COS(#{latitude,jdbcType=DOUBLE} * PI() / 180) * COS(latitude * PI()
		/
		180) * POW(
		SIN(
		(
		#{longitude,jdbcType=DOUBLE} * PI() / 180 - longitude
		* PI() / 180
		) / 2
		),
		2
		)
		)
		) * 1000 * #{val}
		)/1000 AS dis
		FROM
		wh_institution
		where city_code = #{cityCode,jdbcType=VARCHAR} and ins_code = #{insCode,jdbcType=VARCHAR}  and organ_type =
		#{organType,jdbcType=VARCHAR} and state = ‘1‘
		ORDER BY
		if(isnull(dis),1,0),
		dis,
		CONVERT(organ_name USING gbk)
		COLLATE
		gbk_chinese_ci ASC
		LIMIT
		#{startRow},#{endRow}

  

以上是关于mysql oder by排序把null的字段放在最后面的主要内容,如果未能解决你的问题,请参考以下文章

MySql排序查询将null放在最后的解决办法

MySQL中order by排序时,数据存在null咋办

order by 后有多个字段

MySql排序查询将null放在最后的解决办法(默认会在最前,当成最小值处理)

mysql order by无效问题

sql 如何优先显示不为空的字段 并进行排序