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

时间:2022-03-09 03:23:03

默认情况下,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}