在我们日常开发中,有时可能会在SQL中写一些条件,例如这里一个例子

这里有这样一张表,数据如下:

1-条件函数.png

如果我们需要把未认证(状态为NOT_AUTH)的用户放到前面排序显示,在不影响分页的情况下,我们可以这么写

SELECT *,IF(status='NOT_AUTH','NOT_AUTH',null) AS sort FROM `user` ORDER BY sort DESC

这里使用到了MYSQL的IF函数

IF([条件],[为true时值],[为false时值])

例如我们需要整体排序,认证中的在最前,然后是未认证的,最后是已认证的

我们则可以使用MYSQL中的CASE、WHEN、THEN、ELSE、END一套去做

SELECT *,( CASE WHEN STATUS = 'AUTHING' THEN 0 WHEN STATUS = 'NOT_AUTH' THEN 1 WHEN STATUS = 'HAS_AUTH' THEN 2 ELSE 999 END ) AS sort 
FROM
	`user` 
ORDER BY
	sort ASC

这里

CASE
WHEN [条件1] THEN [条件1满足时值]
WHEN [条件2] THEN [条件2满足时值]
WHEN [条件3] THEN [条件3满足时值]
ELSE [条件都不满足时值]
END

PS:在除了查询语句中,其余操作的SQL都可以用该函数哦