MySQL中按照多字段排序及问题解决
因为在做一个项目需要筛选掉一部分产品列表中的产品,使其在列表显示时排在最后,但是所有产品都要按照更新时间排序。
研究了一下系统的数据库结构后,决定将要排除到后面的产品加为粗体,这样在数据库中的“ifbold”就会被标记为1,而其他产品就默认标记为0,然后就打算使用MySQL在Order By时进行多字段排序。
Order by的多条件分割一般使用英文逗号分割,所以我测试的SQL如下:
select * from {P}_product_con where $scl order by 'ifbold' asc,$myord desc limit $pagelimit"
但是运行后没有将”ifbold“正序,但是单纯正序”ifbold“却正常,调试了N久,无意中在phpMyAdmin中运行却发现正常,仔细比对后发现问题原来是来自于”ifblod“的引号上。改为下列语句就正常了:
select * from {P}_product_con where $scl order by `ifbold` asc,$myord desc limit $pagelimit
所以以后大家再程序中写SQL语句时也要注意引号的问题哦!
以上所述就是本文的全部内容了,希望大家能够喜欢。
相关推荐
-
数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
Oracle查询结果集,随机排序 复制代码 代码如下: select * from table1 order by dbms_random.value(); MySQL随机查询出一条记录: 复制代码 代码如下: -- 下面的查询语句效率高,不要使用 SELECT * FROM table1 ORDER BY rand() LIMIT 1 来查询 SELECT * FROM table1 WHERE id=(SELECT id FROM table1 ORDER BY rand() LIMIT 1
-
mysql 关键词相关度排序方法详细示例分析
小项目有时需要用到关键词搜索相关性排序,用sphinx显得杀鸡用牛刀,就用mysql的order by对付下.方法一: 复制代码 代码如下: select * from articles where (title LIKE '%keywords%') or (content LIKE '%helloworld%') order by ((CASE WHEN title LIKE '%keywords%' THEN 2 ELSE 0 END) + (CASE WHEN content LIKE '
-
Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
用了这么长时间,发现自己竟然不知道utf_bin和utf_general_ci这两者到底有什么区别.. ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a' 那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以. utf8_general_
-
让MySQL支持中文排序的实现方法
让MySQL支持中文排序 编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary". 编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了. mysql order by 中
-
两种mysql对自增id重新从1排序的方法
最近老是要为现在这个项目初始化数据,搞的很头疼,而且数据库的Id自增越来越大,要让自增重新从1开始:那么就用下面的方法吧: 方法一:如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数 truncate table 表名 方法二:dbcc checkident ('table_name', reseed, new_reseed_value) 当前值设置为 new_reseed_value.如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的
-
将MySQL查询结果按值排序的简要教程
MySQL查询结果如何排序呢?这是很多人都提过的问题,下面就教您如何对MySQL查询结果按某值排序,如果您感兴趣的话,不妨一看. 之前有一个功能修改,要求MySQL查询结果中: id name * * * 1 lucy ... 3 lucy ... 2 lily ... 4 lucy ... 名字为lucy的优先排在前面,百思不得其解,可能有人会说简单 union嘛 或者弄个临时表什么的,其实我也想过,但是本身SQL逻辑就很多了(上面只是简例),再union的话或者临时表可能绕很大的弯路,后来看
-
MySQL按常规排序、自定义排序和按中文拼音字母排序的方法
MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3种比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 DESC倒叙 -- 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序. 主要是使用函数 FIELD(str,str1,str2,str3,...) MySQL的自定义排序,str与str1.str2.str3...进行比较,并按照str1,str2,str3..
-
Mysql row number()排序函数的用法和注意
虽然使用不多,但是也有情况是需要在mysql 里面写语句开发功能的.在sql server 使用惯了,习惯了使用row_number() 函数进行排序,但是mysql 确没有这样一个函数.然后找到了po主写的一篇 文章.通过变量赋值来查询的.(PS 我测试的版本是mysql 5.6) 先建表 CREATE TABLE `test` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Col1` varchar(50) DEFAULT NULL, `Col2` var
-
MYSQL 关于两个经纬度之间的距离由近及远排序
复制代码 代码如下: select *,(2 * 6378.137* ASIN(SQRT(POW(SIN(PI()*(111.86141967773438-lat)/360),2)+COS(PI()*33.07078170776367/180)* COS(lat * PI()/180)*POW(SIN(PI()*(33.07078170776367-lng)/360),2)))) as juli from `area` order by juli asc limit 0,20 差不多就是这样的
-
mysql的中文数据按拼音排序的2个方法
客服那边需要我对一些酒店进行中文拼音排序,以前没有接触过,在php群里问了一些大牛..得到了2种答案,都可以.哈哈·~ 以下既是msyql 例子,表结构是utf-8的 方法一. 复制代码 代码如下: SELECT `hotel_name` FROM `hotel_base` ORDER BY convert( `hotel_name` USING gbk ) COLLATE gbk_chinese_ci 方法二. 复制代码 代码如下: SELECT `hotel_id` , `hotel_nam
随机推荐
- Mac系统下MySql下载MySQL5.7及详细安装图解
- 浅谈多线程_让程序更高效的运行
- 相对路径与绝对路径的区别
- dos命令for用法详解
- iOS实现播放远程网络音乐的核心技术点总结
- 详解OpenStack云平台的网络模式及其工作机制
- 用PHP实现ODBC数据分页显示一例
- PHP使用pcntl_fork实现多进程下载图片的方法
- Nodejs中session的简单使用及通过session实现身份验证的方法
- 编写Go程序对Nginx服务器进行性能测试的方法
- JS仿flash上传头像效果实现代码
- 有关Ajax中get和post的使用问题
- PowerShell中按文件后缀过滤的实现代码
- shell学习之printf命令格式化输出语句
- 常用C/C++预处理指令详解
- Nginx防盗链根据UA屏蔽恶意User Agent请求(防蜘蛛)
- Android编程之TextView的字符过滤功能分析
- java 字符串截取的三种方法(推荐)
- python中os操作文件及文件路径实例汇总
- stl常用算法(Algorithms)介绍(stl排序算法、非变序型队列)