MYSQL-如何查询/修改最大日期的那条记录

参考资料:http://stackoverflow.com/questions/6898935/sql-update-query-with-group-by-clause

--  更新数据
UPDATE product_info AS t
INNER JOIN
(SELECT product_id,max(update_date) update_date FROM product_info WHERE product_id = 830 GROUP BY product_id) t1
ON t.product_id = t1.product_id AND t.update_date = t1.update_date
SET isActive = 1,remark = ‘update操作直接再上架---3!‘;
-- 查询最新记录
select * from product_info AS t
INNER JOIN
(SELECT product_id,max(update_date) update_date FROM product_info GROUP BY product_id) t1
where t.product_id = t1.product_id AND t.update_date = t1.update_date order by t.product_id;
-- 所用表的结构
CREATE TABLE `product_info` (
    `product_id` INT(10) UNSIGNED NOT NULL,
    `product_name` VARCHAR(50) NOT NULL,
    `cost_price` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT ‘0.00‘,
    `current_price` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT ‘0.00‘,
    `update_date` DATETIME NOT NULL DEFAULT ‘2015-01-01 00:00:00‘,
    `Remark` VARCHAR(255) NOT NULL DEFAULT ‘‘,
    `isActive` TINYINT(1) NOT NULL DEFAULT ‘1‘,
    INDEX `Idx_id` (`product_id`)
)
COMMENT=‘商品信息表(isActive表示现有产品是否在出售)\r\n此表在新增商品的时候在stock表中添加一条记录‘
COLLATE=‘utf8_general_ci‘
ENGINE=InnoDB
;
时间: 2024-11-09 03:39:30

MYSQL-如何查询/修改最大日期的那条记录的相关文章

mysql查询各种类型的前N条记录

mysql查询各种类型的前N条记录,将3改为N(需查询条数)即可  (select * from event_info where event_type = 1  limit 3)union all(select * from event_info where event_type = 2  limit 3)union all(select * from event_info where event_type = 3  limit 3) 原文出处:http://my.oschina.net/u/

MySQL分组查询每组最新的一条数据

开发中经常会遇到,分组查询最新数据的问题,比如下面这张表(查询每个地址最新的一条记录): sql如下: -- ---------------------------- -- Table structure for test -- ---------------------------- DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10

dedecms如何修改共0页/0条记录为英文版?

近日,在测试一个网站功能的时候,发现在搜索结果的下面为中文的“共0页/0条记录”,但客户的网站为英文版,所以我们需要将搜索的结果信息也要显示为英文,好了,我们开始动手修改dedecms的文件,以达到我们需要的效果吧! “共0页/0条记录”我们需要修改include/datalistcp.class.php文件,但是请注意修改了这个文件之后其它很多地方的分页内容都将是显示英文的. 找到文件大概在第30行: $lang_pre_page = '上页';    $lang_next_page = '下

SQL:多表关联取最大日期的那条记录

作者:iamlasong 1.需求 两个表,投递记录表和封发开拆记录表,现在想知道投递日期距最后一次封发日期天数分布情况. 对这个需求,需要先查询出投递明细,同时要知道对应的邮件最后一次封发情况,如机构.日期等 2.明细查询 考虑到一天可能封发多次,所以取日期和时间都是最大的那条,语句如下: select * from tb_evt_bag_mail_rela a,tb_evt_dlv c , tb_jg d where a.mail_num=c.mail_num and a.bag_actn_

分组查询 每组最高的某条记录

需求是 查询每个班 年龄最小的那个人 ,需要显示如下: SQL 语句如下: select id,SUBSTRING_INDEX(GROUP_CONCAT(age order by age),',',1) as age,SUBSTRING_INDEX(GROUP_CONCAT(username order by age),',',1) as userNamefrom personGROUP BY id 原文地址:https://www.cnblogs.com/refuge/p/9061383.ht

第三章 MySQL高级查询(一)

第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1.       DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSERT,UPDATE,DELECT. 2.       DDL(Data Definition Language)(数据定义语言):创建或删除数据库对象操作,有CREATE,DROP,ALTER三个语法组成. 3.       DQL (STructured Query Language)(数据查询语

mysql的查询使用explain的讲解

摘自:http://www.jb51.net/article/33736.htm 在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快.如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择. explain 返回了一行记录,它包括了 select语句中用到的各个表的信息.这些表在结果中按照mysql即将执行的查询中读取的顺序列出来.mysql用一次

MySQL分页查询性能优化

当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点.下面简单说一下我知道的一些方法. 准备工作 为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明. 表名:order_history 描述:某个业务的订单历史表 主要字段:unsigned int id,tinyint(4) int type 字段情况:该表一共37个字段,不包含text等大型数组,最大为varcha

MySQL之查询性能优化

为什么查询速度会慢 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中"执行"可以认为是整个生命周期中最重要的阶段,这其中包括了大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序.分组等. 在完成这些任务的时候,查询需要在不同的地方花费时间,包括网络,CPU计算,生成统计信息和执行计划.锁等待(互斥等待)等操作,尤其是向底层存储引擎检索数据的调用操作,这些调用需要在内存操作.CPU操作和内存