mysql取范围纪录_mysql取出表中,某字段值最大的一条纪录,sql语句

一个为交易表,有唯一id,别名trade_id

一个为交易状态详情表,记录trade_id的多个状态。

进行了两个表查询。查询某个trade_id的交易情况及最新状态。

直接粘贴此sql,执行即知。

-- ----------------------------

-- Table structure for `trade_test`

-- ----------------------------

DROP TABLE IF EXISTS `trade_test`;

CREATE TABLE `trade_test` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`user_id` int(11) NOT NULL COMMENT '用户ID',

`create_at` int(11) NOT NULL COMMENT '创建时间',

`totalmoney` decimal(10,2) NOT NULL COMMENT '总金额',

`tid` int(11) NOT NULL COMMENT '交易编号',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='交易发起表';

-- ----------------------------

-- Records of trade_test

-- ----------------------------

INSERT INTO `trade_test` VALUES ('1', '1', '1451700000', '60.00', '1111');

INSERT INTO `trade_test` VALUES ('3', '2', '1451800000', '50.00', '2222');

DROP TABLE IF EXISTS `status_detail_test`;

CREATE TABLE `status_detail_test` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`trade_id` int(11) NOT NULL,

`status_name` varchar(10) DEFAULT NULL,

`brief` text COMMENT '状态说明',

`create_at` int(11) DEFAULT NULL COMMENT '创建时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='交易状态详情表';

-- ----------------------------

-- Records of status_detail

-- ----------------------------

INSERT INTO `status_detail_test` VALUES ('1', '1', 'START', null, '1453595414');

INSERT INTO `status_detail_test` VALUES ('2', '1', 'AGREE', null, '1453595753');

INSERT INTO `status_detail_test` VALUES ('3', '2', 'START', null, '1453898857');

INSERT INTO `status_detail_test` VALUES ('4', '2', 'AGREE', null, '1453941720');

INSERT INTO `status_detail_test` VALUES ('5', '2', 'PAY', null, '1453941924');

INSERT INTO `status_detail_test` VALUES ('6', '1', 'PAY', null, '1453942924');

INSERT INTO `status_detail_test` VALUES ('7', '1', 'TRANSFER', null, '1455564464');

INSERT INTO `status_detail_test` VALUES ('8', '1', 'COMPLETE', null, '1455670471');

SELECT

a.id as trade_id,

a.create_at as trade_create_at,

b.id as status_final_id,

b.status_name,

b.create_at as status_create_at

FROM

trade_test AS a ,

status_detail_test AS b

WHERE

b.trade_id = a.id

AND

b.create_at = (select max(create_at) from status_detail_test)

AND

a.id = 1

--

引用一简单的例子:

http://zhidao.baidu.com/link?url=15DnazEMsBVsoIs_M-WiFfLjt-YI8tEtuvL2yN7aEDe3x8cr4u_OgpgyUy1vJ4Pas3zzhZpQsY1fGs-KdFnI-q例如:表字段

id,name,age,

要求:取出所有年龄最大的一个纪录

select top 1 id,name,age from 表 order by age desc

按照年龄倒序排序,然后取第一条。 考虑可能有多人年龄相同,如果都需取出,可以这样写: select id,name,age from 表 where age=(select max(age) from 表)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值