IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    mysql查询语句加入order by desc读取不出数据

    unvs发表于 2017-06-06 06:41:07
    love 0

    你有没有遇到,写SQL语句时,当加上order by排序条件,就无法查询读取出数据,去掉后就能读取数据。
    比方:
    $sql = ”SELECT * FROM test WHERE (1=1) AND user_name LIKE ‘%Unvs博客%’ ORDER BY user_id DESC“;  //红色部分加上就不能查出数据(可能存在like条件不一样而能查出数据、实在非常诡异)、去掉就能得到数据

    分析原因:
    仔细查看表结构与条件的字段,发现user_name、user_id字段类型都为varchar,会不会跟数据类型有关系?后面果真如此。

    解决方案:
    将order by排序的user_id字段类型转为int无符号整形,写法如下:
    $sql = ”SELECT * FROM test WHERE (1=1) AND user_name LIKE ‘%Unvs博客%’ ORDER BY cast(user_id, UNSIGNED INTEGER) DESC”;//有符号整形 SIGNED INTEGER

    当然,可能你的情况跟我的不完全一样,也不一定能解决问题,那就需要另寻分析了,比如SQL语法错误、数据表结构设计、数据优化等。



沪ICP备19023445号-2号
友情链接