我想选择并仅显示在我的数据库中输入的最新记录。例如,我有下表:有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
谢谢!
答案 0 :(得分:1)
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)
如何使用触发器。
非常简单的插入触发器可以帮助你。
我想你想要的是在某个时候检查数据后得到新插入的数据。
因此您必须知道您检查的最后一条记录的ID。
会话或cookie不是一个好的答案。
因此您需要创建一个包含您检查过的最后一个记录ID的表。
select * from table where id > (select id from another_table);
检查记录时
update another_table set id = (select max(id) from table);