行业知识
mysql数据库操作小寄巧
2026-10-30 14:06:00
来源:互联网转载
目录
- json字段查询
- 时间相关
- 只有日期
- 只有时间
- 又有时间又有日期
- 时间比较
- 时间运算
- 某字段同的取最新数据(软性的新数据覆盖旧数据查找)
- sql_mode=only_full_group_by的解决办法
- 优化���路
json字段查询
查询某个json字段(xx)的某个属性下的某个数组里的第n个元素的某个属性(究极叠buff版)
SELECTJSON_EXTRACT(xx, '$.a.arr[0].b') AS first_element_name FROMtable
时间相关
只有日期
SELECT CURDATE(),CURRENT_DATE(),CURRENT_DATE;
只有时间
SELECT CURTIME(),CURRENT_TIME(),CURRENT_TIME;
又有时间又有日期
SELECT NOW(),CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP,LOCALTIME(),LOCALTIME,LOCALTIMESTAMP(),LOCALTIMESTAMP,SYSDATE();
其中SYSDATE()是执行当前函数的时间,NOW是执行当前sql的时间
时间比较
时间可以直接字符串比较
时间运算
INTERVAL来表示时间间隔,直接加
看起来nb,但是别用,这种加减运算就在代码里面算完再放进去效率比这样高
某字段同的取最新数据(软性的新数据覆盖旧数据查找)
SELECT t1.id,t1.batch,t1.pci,t1.count,t1.roadNumber,t1.date,t1.direction,t1.str_stake,t1.end_stake,t1.status,t1.roadType FROM inspection t1 LEFT JOIN inspection t2 ON t1.roadNumber = t2.roadNumber AND t1.date
sql_mode=only_full_group_by的解决办法
- 你要是能去掉这个mode当然最好,省的麻烦
- 我这边因为是在已有的数据库上进行修改,以防影响以前的代码只能采取别的措施,具体如下
比如我这边要搜索
SELECT MAX(ins.pci) AS max_pci,ins.roadNumber, max(ins.date) FROM inspection ins GROUP BY ins.roadNumber ORDER BY max_pci
优化思路
- 少写in,能用between就用between,少用除了=以外的比较符号
- 减少在语句中进行运算,尤其是上面那个时间计算
- 能别用select *就别用
上一篇:手机上失业备案怎么办理