天天看點

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` (

  `trade_id` int(11) NOT NULL,

  `status_name` varchar(10) DEFAULT NULL,

  `brief` text COMMENT '狀态說明',

  `create_at` int(11) DEFAULT NULL COMMENT '建立時間',

) 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)

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 表)

  本文轉自phpervip 51CTO部落格,原文連結:http://blog.51cto.com/phpervip/1743019,如需轉載請自行聯系原作者