日期:2014-05-20  浏览次数:20701 次

一个查询语句 求解答 在线等
本帖最后由 hujiefei 于 2012-11-07 15:33:01 编辑 测试数据
2012/11/4 16:15:49 369 2012/11/4 16:15:50 1 4
2012/11/4 16:29:39 370 2012/11/4 16:29:39 1 4
2012/11/4 16:30:31 371 2012/11/4 16:30:31 1 4
2012/11/4 16:30:40 372 2012/11/4 16:30:40 1 4
2012/11/4 16:34:09 373 2012/11/4 16:34:09 1 4
2012/11/4 16:35:41 374 2012/11/4 16:35:41 1 4
2012/11/7 14:32:33 388 2012/11/7 14:32:33 1 4 42
2012/11/7 14:32:52 389 2012/11/7 14:32:52 1 4 2
2012/11/7 14:33:14 390 2012/11/7 14:33:14 1 4 5
2012/11/7 15:06:42 391 2012/11/7 15:06:42 1 4 2
2012/11/7 15:15:18 392 2012/11/7 15:15:18 1 4 2
2012/11/7 15:15:26 393 2012/11/7 15:15:26 1 4 42
2012/11/7 15:15:45 394 2012/11/7 15:15:45 1 4 5
2012/11/7 15:15:48 395 2012/11/7 15:15:48 1 4 5


建表语句
CREATE TABLE `rule_setting` (
  `RULE_SETTING_ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `CREATE_DATE` datetime DEFAULT NULL,
  `CREATE_USER` bigint(20) DEFAULT NULL,
  `EFFECTIVE_DATE` datetime DEFAULT NULL,
  `RULE_CATEGORY_ID` int(11) DEFAULT NULL,
  `ITEM_ID` bigint(20) DEFAULT NULL,
  `BANK_ID` bigint(20) DEFAULT NULL,
  `APPFORM_ID` int(11) DEFAULT NULL,
  `BRANCH_ID` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`RULE_SETTING_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=396 DEFAULT CHARSET=utf8;

我写的sql 可是达不到我的要求
SELECT RS.EFFECTIVE_DATE,
       RS.RULE_SETTING_ID,
       RS.CREATE_DATE,
       RS.CREATE_USER,
       RS.RULE_CATEGORY_ID,
       RS.ITEM_ID,
       RS.BRANCH_ID
  FROM RULE_SETTING RS
 WHERE     BANK_ID = 1
       AND EFFECTIVE_DATE <= now()
       AND RS.RULE_CATEGORY_ID = 4
       And RS.BRANCH_ID is not null
       order by rule_setting_id desc limit 0 ,1
我要得到的数据是
2012/11/7 15:15:26 393 2012/11/7 15:15:26 1 4 42
2012/11/7 15:15:48 395 2012/11/7 15:15:48 1 4 5
2012/11/7 15:15:18 392 2012/11/7 15:15:18 1 4 2
2012/11/4 16:35:41 374 2012/11/4 16:35:41 1 4
------最佳解决方案--------------------
SELECT RS.RULE_SETTING_ID,
       RS.CREATE_DATE,
       RS.CREATE_USER,
       RS.RULE_CATEGORY_ID,
       RS.ITEM_ID,
       RS.BRANCH_ID
  FROM RULE_SETTING RS,
       (SELECT max(RULE_SETTING_ID) RULE_SETTING_ID
          FROM RULE_SETTING
         WHERE     BANK_ID = '1'
               AND EFFECTIVE_DATE <= now()
               AND RULE_CATEGORY_ID = '4'