如何获取特定列的最后一个记录值?

时间:2015-05-28 05:06:49

标签: mysql sql

查询:

select total_amount from sales_return;

输出:

total_amount
157.00
8.00
1.00
52.00

我试图获取最后一个值,即52.0。所以我尝试了以下查询。

select total_amount from sales_return order by total_amount desc limit 1;

显示第一个值157.00作为输出。我做错了什么?

查询创建sales_return表。

'sales_return', 'CREATE TABLE `sales_return` (
  `sales_return_no` varchar(12) DEFAULT NULL,
  `sales_return_date` date DEFAULT NULL,
  `bill_type` varchar(20) DEFAULT NULL,
  `bill_no` varchar(12) DEFAULT NULL,
  `bill_date` date DEFAULT NULL,
  `cust_name` varchar(60) DEFAULT NULL,
  `doctor_name` varchar(100) DEFAULT NULL,
  `payment_mode` varchar(20) DEFAULT NULL,
  `card_no` varchar(25) DEFAULT NULL,
  `card_holders_name` varchar(20) DEFAULT NULL,
  `bank_name` varchar(20) DEFAULT NULL,
  `card_expiry` varchar(20) DEFAULT NULL,
  `item_code` varchar(30) DEFAULT NULL,
  `item_name` varchar(100) DEFAULT NULL,
  `mfr_name` varchar(50) DEFAULT NULL,
  `formulation` varchar(45) DEFAULT NULL,
  `batch_no` varchar(100) DEFAULT NULL,
  `qty` int(11) DEFAULT NULL,
  `unit_price` double(12,2) DEFAULT NULL,
  `expiry_date` date DEFAULT NULL,
  `mrp` double(12,2) DEFAULT NULL,
  `unit_discount` double(3,1) DEFAULT NULL,
  `unit_vat` double(3,1) DEFAULT NULL,
  `sub_total` double(12,2) DEFAULT NULL,
  `total_discount` double(12,2) DEFAULT NULL,
  `total_vat` double(12,2) DEFAULT NULL,
  `total_amount` double(12,2) DEFAULT NULL,
  `paid_amount` double(12,2) DEFAULT NULL,
  `balance_amount` double(12,2) DEFAULT NULL,
  `total_items` int(11) DEFAULT NULL,
  `total_qty` int(11) DEFAULT NULL,
  `adj_id` int(11) unsigned DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8'

3 个答案:

答案 0 :(得分:0)

如果没有order by形式的某些上下文,Mysql没有“第一条记录”或“最后一条记录”的概念。没有order by,第一个和最后一个记录是不确定/无意义的。

从您提供的表架构中,sales_return_date似乎是一个合适的字段,用于确定记录的“顺序”。即,输入的最后一条记录是最近输入的记录。因此,我们需要order by该字段,然后limit将结果只显示为1。

select total_amount
  from sales_return
  order by sales_return_date desc
  limit 1

答案 1 :(得分:0)

<强>查询:

select `total_amount` from `sales_return` order by `bill_date` desc limit 1

上述查询可能会为您提供最后total_amount值。

答案 2 :(得分:0)

试试这个:这里adj_id是无符号的,所以没有负值,可能像主键一样,所以试试这个

 select total_amount
      from sales_return
      order by adj_id desc
      limit 1