小工具知识网

当前位置: 首页 > 行业知识 > mysql数据库操作小寄巧

行业知识

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的解决办法

      1. 你要是能去掉这个mode当然最好,省的麻烦
      2. 我这边因为是在已有的数据库上进行修改,以防影响以前的代码只能采取别的措施,具体如下

        比如我这边要搜索

      SELECT MAX(ins.pci) AS max_pci,ins.roadNumber, max(ins.date) FROM inspection ins GROUP BY ins.roadNumber ORDER BY max_pci

      优化思路

      1. 少写in,能用between就用between,少用除了=以外的比较符号
      2. 减少在语句中进行运算,尤其是上面那个时间计算
      3. 能别用select *就别用

上一篇:手机上失业备案怎么办理

下一篇:sts怎么添加tomcat服务器?