mysql查询语句加入order by desc读取不出数据
你有没有遇到,写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语法错误、数据表结构设计、数据优化等。
本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:mysql查询语句加入order by desc读取不出数据
一条评论
看起来是表字段定义的问题,像user_id字段还是建议定义成UNSIGNED INTEGER类型