写一个sql,查询tbl_ audit_situation_info 表,查询结果中approveStatus 为0,3,4 的排前面,其余的放后面,然后每个状态各自根据applyTime进行排序
时间: 2023-08-31 19:28:13 浏览: 151
### 回答1:
下面是查询语句:
```
SELECT *
FROM tbl_audit_situation_info
ORDER BY (CASE WHEN approveStatus IN (0,3,4) THEN 0 ELSE 1 END),
(CASE WHEN approveStatus IN (0,3,4) THEN applyTime END),
applyTime;
```
这个查询语句首先对 approveStatus 为 0,3,4 的数据进行特殊处理,将其置于查询结果的前面;其他数据则放在后面。对于 approveStatus 为 0,3,4 的数据,再根据 applyTime 字段进行排序;对于剩下的数据,也按照 applyTime 字段进行排序。
### 回答2:
可以使用以下SQL语句来查询tbl_audit_situation_info表,并按照题目要求对查询结果进行排序:
```sql
SELECT *
FROM tbl_audit_situation_info
WHERE approveStatus IN (0, 3, 4)
ORDER BY CASE
WHEN approveStatus = 0 THEN 1
WHEN approveStatus = 3 THEN 2
WHEN approveStatus = 4 THEN 3
ELSE 4
END, applyTime
```
解释说明:
- 首先使用`SELECT *`从tbl_audit_situation_info表中选择所有列的数据;
- 使用`WHERE`子句过滤出approveStatus为0、3、4的记录;
- 使用`ORDER BY`子句根据approveStatus字段的值来执行排序。条件`CASE WHEN approveStatus = 0 THEN 1 WHEN approveStatus = 3 THEN 2 WHEN approveStatus = 4 THEN 3 ELSE 4 END`用于将approveStatus为0的记录排在前面,其次是approveStatus为3的记录,再次是approveStatus为4的记录,剩余approveStatus的记录排在最后;
- 最后,对于每个状态的记录,在同一状态下根据applyTime字段进行排序。
这样,查询结果中approveStatus为0、3、4的记录会排在前面,并且每个状态的记录会按照applyTime字段进行排序。剩下的其他状态的记录会在这些记录之后排列,并且同一状态下也按照applyTime字段进行排序。
### 回答3:
可以使用以下SQL查询语句来实现题目要求:
```sql
SELECT *
FROM tbl_audit_situation_info
ORDER BY CASE
WHEN approveStatus = 0 THEN 1
WHEN approveStatus = 3 THEN 2
WHEN approveStatus = 4 THEN 3
ELSE 4
END, applyTime
```
这个查询语句使用了`ORDER BY`子句来对查询结果进行排序。首先,我们使用`CASE`表达式来根据`approveStatus`字段的值设置排序优先级。当`approveStatus`为0时,优先级为1,为3时,优先级为2,为4时,优先级为3,其他值的优先级为4。然后,我们使用`applyTime`字段来对相同优先级的记录进行进一步排序。通过这种方式,可以实现先将`approveStatus`为0、3、4的记录排在前面,并且每个状态下的记录按照`applyTime`进行排序。
阅读全文