MYSQL语句 - 不常见用法

1、查找某条数据的创建时间同个月内的所有数据

SELECT * FROM  表名  WHERE DATE_FORMAT( create_time, '%Y%m' ) = DATE_FORMAT( '2021-01-01' , '%Y%m' )

create_time:表里表示创建时间的字段名

'2021-01-01' :选择的某条数据创建时间的年月日

 

 

2、使用select filed from table where field in (....)语句的排序问题

想要通过自己指定的序列进行排序,而不是单纯的通过某个字段的ASC/DESC 进行排序..

有2种方法:利用field函数或者find_in_set函数

如果现在有一个表如下:

mysql> select * from test;
+----+--------+
| id | number |
+----+--------+
|  1 |      2 |
|  2 |      3 |
|  3 |      5 |
|  4 |      8 |
|  5 |      7 |
|  6 |      1 |
|  7 |      9 |
|  8 |      6 |
+----+--------+
8 rows in set (0.00 sec)

第一种:使用field函数排序:

mysql> select id from test where id in(8,7,6,5,4) order by field(id,8,7,6,5,4);
+----+
| id |
+----+
|  8 |
|  7 |
|  6 |
|  5 |
|  4 |
+----+
5 rows in set (0.00 sec)

 

第二种:使用find_in_set()函数

mysql> select id from test where id in(8,7,6,5,4) order by find_in_set(id,'8,7,6,5,4');
+----+
| id |
+----+
|  8 |
|  7 |
|  6 |
|  5 |
|  4 |
+----+
5 rows in set (0.00 sec)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值