求一条跟if条件有关的sql语句 本帖最后由 yao970953039 于 2015-01-31 14:32:39 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) CREATE TABLE `test` ( `id` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `type` TINYINT(1) DEFAULT NULL, `date` VARCHAR(10) DEFAULT NULL, `times` VARCHAR(10) NOT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO `test` (`id`, `type`, `date`, `times`) VALUES(1, 1, NULL, ''),(2, 1, NULL, ''),(3, 2, '2015-01-02', '09:12'),(4, 1, NULL, ''),(5, 1, NULL, ''),(6, 2, '2015-02-03', '11:11'),(7, 2, '2014-12-11', '16:54'),(8, 1, NULL, ''),(9, 1, NULL, '');想得到的数据如下9 18 15 14 12 11 1 6 2 2015-02-03 11:113 2 2015-01-02 09:127 2 2014-12-11 16:54 mysql> select * from test;+----+------+------------+-------+| id | type | date | times |+----+------+------------+-------+| 1 | 1 | NULL | || 2 | 1 | NULL | || 3 | 2 | 2015-01-02 | 09:12 || 4 | 1 | NULL | || 5 | 1 | NULL | || 6 | 2 | 2015-02-03 | 11:11 || 7 | 2 | 2014-12-11 | 16:54 || 8 | 1 | NULL | || 9 | 1 | NULL | |+----+------+------------+-------+9 rows in set (0.00 sec)mysql> select * from test -> order by type,`date` desc, `id` desc;+----+------+------------+-------+| id | type | date | times |+----+------+------------+-------+| 9 | 1 | NULL | || 8 | 1 | NULL | || 5 | 1 | NULL | || 4 | 1 | NULL | || 2 | 1 | NULL | || 1 | 1 | NULL | || 6 | 2 | 2015-02-03 | 11:11 || 3 | 2 | 2015-01-02 | 09:12 || 7 | 2 | 2014-12-11 | 16:54 |+----+------+------------+-------+9 rows in set (0.00 sec)mysql> 按照版主说的试了下,type为1的时候date为空才可以达到楼主想要的结果 select * from test order by type,(case when type=1 then id else date end) desc 嗯,我其实想要根据type来写if else逻辑 版主的不能符合我的要求,综合你俩的 差不多能搞出来 手机号字段用varchar(13)号,还是bigint类型好? jdbc连接MYSQL出乱码怎么解决? mysql dump.... 关于数据库语句的问题,看不懂,希望大侠们帮忙解释一下 写了一个MySQL连接测试,不行,帮看看 遇到这样一个效率问题,不知道如何解决。 mysql问题 MYSQL连接查询 求助:为什么不能用localhost访问数据,谢谢大家 mysql migration toolkit 启动报错 mysql插入一条记录 有语句木 希望分享一下 谢谢 mysql Connector/net不能更新或删除
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
CREATE TABLE `test` (
`id` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` TINYINT(1) DEFAULT NULL,
`date` VARCHAR(10) DEFAULT NULL,
`times` VARCHAR(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO `test` (`id`, `type`, `date`, `times`) VALUES
(1, 1, NULL, ''),
(2, 1, NULL, ''),
(3, 2, '2015-01-02', '09:12'),
(4, 1, NULL, ''),
(5, 1, NULL, ''),
(6, 2, '2015-02-03', '11:11'),
(7, 2, '2014-12-11', '16:54'),
(8, 1, NULL, ''),
(9, 1, NULL, '');
想得到的数据如下
9 1
8 1
5 1
4 1
2 1
1 1
6 2 2015-02-03 11:11
3 2 2015-01-02 09:12
7 2 2014-12-11 16:54
+----+------+------------+-------+
| id | type | date | times |
+----+------+------------+-------+
| 1 | 1 | NULL | |
| 2 | 1 | NULL | |
| 3 | 2 | 2015-01-02 | 09:12 |
| 4 | 1 | NULL | |
| 5 | 1 | NULL | |
| 6 | 2 | 2015-02-03 | 11:11 |
| 7 | 2 | 2014-12-11 | 16:54 |
| 8 | 1 | NULL | |
| 9 | 1 | NULL | |
+----+------+------------+-------+
9 rows in set (0.00 sec)mysql> select * from test
-> order by type,`date` desc, `id` desc;
+----+------+------------+-------+
| id | type | date | times |
+----+------+------------+-------+
| 9 | 1 | NULL | |
| 8 | 1 | NULL | |
| 5 | 1 | NULL | |
| 4 | 1 | NULL | |
| 2 | 1 | NULL | |
| 1 | 1 | NULL | |
| 6 | 2 | 2015-02-03 | 11:11 |
| 3 | 2 | 2015-01-02 | 09:12 |
| 7 | 2 | 2014-12-11 | 16:54 |
+----+------+------------+-------+
9 rows in set (0.00 sec)mysql>
select * from test
order by type,(case when type=1 then id else date end) desc