問題描述:有乙個業務表,其狀態值有以下幾種
0:"我的排序規則既不是 order by status desc 也不是 asc待審批"
,1:"通過"
,2:"
不通過"
,3:"駁回"
,4:"
委託",
而是按照 待審批 > 駁回 > 委託 > 通過 >不通過 的順序排序
create table if not exists `test_process` (資料如下:`id` int(11) not null auto_increment,
`status` int(11) default 0,
`statusdesc` varchar(20) default '',
primary key (`id`)
) engine=innodb default charset=utf8 auto_increment=1;
insert into test_process (status,statusdesc) value (1,'pass');
insert into test_process (status,statusdesc) value (2,'not_pass');
insert into test_process (status,statusdesc) value (3,'callback');
insert into test_process (status,statusdesc) value (4,'entrust');
此時應當使用field函式:
select * from test_process order by field(status,0,3,4,1) asc;輸出結果:
按照後面的值正序排列,無匹配的將會放在最前面(比如2)
倒序時候,依據值最前面的值的匹配行的放在最後面,無匹配狀態值將作為狀態值列表的最前面的狀態值(2)對應匹配行放在最後面
狀態值在資料庫中的檢索
對於關係型資料庫而言,針對表的檢索,一般來說,建立合適的索引就可以達到很好的檢索效果。這裡不包含表設計的合理與否 比如像狀態列這樣可選擇性非常低的值,該如何檢索?其實這個已經不是關係型資料庫擅長的方面了。但是如果出於歷史或者許多不可抗拒的原因,我們還得在關係表中進行優化,該咋辦?一般來說,就是建立靜...
mysql對資料庫的date字段值進行逐個遞增
先把日期修改為統一的時間如 2019 01 01 00 00 00,update table set date 2020 09 01 09 30 00 然後執行sql語句,實現date字段值進行逐個遞增,每乙個值增加10秒,sql語句如下 set rownum 0 update comm sh da...
Mysql 對資料庫的操作
mysql 基本概念 mysql檔案系統,用來儲存資料,然後通過sql語句來獲取資料 er模型圖 mysql 免費的小型的資料庫,現在被oracle收購.oracle oracle公司收費的大型的資料庫.sqlserver 微軟公司收費中型的資料庫.db2 ibm公司收費的大型的資料庫.sybase...