• mysql 中两个字段group by后想要第二个,为啥只留下第一个? 去除mysql字段值后面的回车和换行符


    今天发现,之前写到mysql中的推送日志,有两个问题:

    1)  由于日志是添加式的不是覆盖式的,一天执行多次,就有多条记录,我只想要最后一次的记录即可,用这个语句从库里检索:SELECT * FROM `HuaZhu_price_wm` GROUP BY PushDate,source ORDER BY id DESC;

    我想取的是每天最后一次推送的日志,可这条语句出来的却是第一次即12点时推送的日志,不是我想要的。

    SELECT 
      `ID`,
      `PushDate`,
      `Source`,
      `PushTarget`,
      `PushActual`,
      `CreateTime` 
    FROM
      (SELECT 
        `ID`,
        `PushDate`,
        `Source`,
        `PushTarget`,
        `PushActual`,
        `CreateTime` 
      FROM
        `test`.`table` 
         ORDER BY id DESC) AS tab1 GROUP BY pushdate,source ORDER BY id DESC;     #group by 时自动取的第一条,所以在group by 之前按ID倒排序,这样最后一次的日志就排在前面了,然后再group by 时就留下的最后一次的日志了。

     2) 我读的TXT文件日志写的mysql中以备之后查询统计,所以一个来源字段的中文字符串后面有回车和换行符,导致查询时需要做处理。

    用trim('NNNN') 不能去除,才发现后面是跟了个回车或者换行符。

    解决方案: a)  where 条件中用 source like '%本酒店ctrip%'

                   b ) SELECT LENGTH(REPLACE(REPLACE('本酒店NN

    ',CHAR(10),''),CHAR(13),''));                 即用replace函数将回车和换行符替换成空,就可以匹配条件了。  CHAR(10)是回车,  CHAR(13)是换行符。
  • 相关阅读:
    display:block;inline;inline-block大总结
    img图片inline-block总结
    定时器
    获取样式
    UmiJS
    vue 点击当前路由重新加载该路由
    Support for the experimental syntax 'decorators-legacy' isn't currently enab -- 装饰器@
    js 改变匹配到的字符串的颜色
    with
    页面从输入 URL 到页面加载显示完成
  • 原文地址:https://www.cnblogs.com/yoyoma0355/p/11358231.html
Copyright © 2020-2023  润新知