从mysql中选择最新的日期

时间:2015-08-07 03:50:21

标签: php mysql

我想选择并仅显示在我的数据库中输入的最新记录。例如,我有下表:有4列公司项目价格日期。我需要做的是选择所有列并按原样显示,如果没有其他价格添加到表中。如果新项目价格添加到表中,则新闻记录应始终显示。我尝试了几个代码,但对我不起作用。所以如果有人可以帮助我,我感激不尽。

price
=====
company      Item       Price   Date
ABC          Item1     100    1-07-2015
DEF          Item1     200    1-06-2015
GHI          Item1     400    1-07-2014
JKL          Item1     110    1-07-2015

谢谢!

4 个答案:

答案 0 :(得分:1)

SQL Fiddle

MySQL 5.6架构设置

CREATE TABLE price
    (`company` varchar(3), `Item` varchar(5), `Price` int, `Date` datetime)
;

INSERT INTO price
    (`company`, `Item`, `Price`, `Date`)
VALUES
    ('ABC', 'Item1', 100, '2015-07-01 00:00:00'),
    ('DEF', 'Item1', 200, '2015-07-01 00:00:00'),
    ('GHI', 'Item1', 400, '2014-07-01 00:00:00'),
    ('JKL', 'Item1', 110, '2015-07-01 00:00:00')
;

查询1

select
        p.*
from price p
inner join (
  select `Item`, MAX(`Date`) as MaxDate
  from price
  group by `Item`
  ) m on p.`Item` = m.`Item` and p.`Date` = m.MaxDate

<强> Results

| company |  Item | Price |                   Date |
|---------|-------|-------|------------------------|
|     ABC | Item1 |   100 | July, 01 2015 00:00:00 |
|     DEF | Item1 |   200 | July, 01 2015 00:00:00 |
|     JKL | Item1 |   110 | July, 01 2015 00:00:00 |

答案 1 :(得分:0)

尝试这样的事情

SELECT MAX(Date) FROM price //in case of timestamp

或如果您只想获取单个记录

,请使用以下内容
SELECT Date FROM price ORDER BY Date DESC LIMIT 1

OR

SELECT * FROM price ORDER BY Date DESC LIMIT 1

答案 2 :(得分:0)

  Select * from (your_database_name) Order by Date DESC

答案 3 :(得分:-1)

如何使用触发器。

非常简单的插入触发器可以帮助你。

mysql trigger exmple

我想你想要的是在某个时候检查数据后得到新插入的数据。

因此您必须知道您检查的最后一条记录的ID。

会话或cookie不是一个好的答案。

因此您需要创建一个包含您检查过的最后一个记录ID的表。

select * from table where id > (select id from another_table);

检查记录时

update another_table set id = (select max(id) from table);