比如以时间最大为最后一条,则将符合条件的资料都筛选出来,再按时间排序,再取一笔资料。
SQL如下:
select a,b from table where a>'某个时间' order by a desc limit 1
(上面SQL中a为时间)。
用max(time)查询方可!!
select oid,status,max(time) time from 表名 group by oid,max(time);
SELECT * from tb where id = (SELECT max(id) FROM tb);
mysql 分组取最新的一条记录(整条记录)
mysql取分组后最新的一条记录,下面两种方法.一种是先筛选 出最大和最新的时间,在连表查询.一种是先排序,然后在次分组查询(默认第一条),就是最新的一条数据了
select * from t_assistant_article as a, (select max(base_id) as base_id, max(create_time) as create_time from t_assistant_article as b group by base_id ) as b where a.base_id=b.base_id and a.create_time = b.create_time
select base_id,max(create_time), max(article_id) as article_id from t_assistant_article as b group by base_id
select * from (select * from t_assistant_article order by create_time desc) as a group by base_id
1、查询第一行记录:
select * from table limit 1
2、查询第n行到第m行记录
select * from table1 limit n-1,m-n;
SELECT
*
FROM
table
LIMIT
5
,
10;返回第6行到第15行的记录
select * from employee limit 3,1;
// 返回第4行
3、查询前n行记录
select * from table1 limit 0,n;
select * from table1 limit n;
4、查询后n行记录
select * from table1 order by id desc dlimit n;//倒序排序,取前n行 id为自增形式
5、查询一条记录($id)的下一条记录
select * from table1 where id>$id order by id asc dlimit 1
6、查询一条记录($id)的上一条记录
select * from table1 where id<$id order by id desc dlimit 1
select * from table order by id desc limit 1MySql : SELECT * FROM 表名 ORDER BY 表_ID DESC LIMIT 1 SQLServer/Oracle : SELECT TOP 1 * FROM 表名 ORDER BY 表_ID DESC首先要确定什么是
device_id,
GROUP_CONCAT( merchant_id ) merchant_id,
SUBSTRING_INDEX( GROUP_CONCAT( remark ORDER BY create_time DESC ), ",", 1 ) AS remark,
SUBSTRING_INDEX( GROUP_CONCAT( create_time ORDER B...
嵌套
查询
糟糕的优化在上面我提到过,不考虑特殊的情况,联表
查询
要比嵌套
查询
更有效。尽管两条
查询
表达的是同样的意思,尽管你的计划是告诉服务器要做什么,然后让它决定怎么做,但有时候你非得告诉它改怎么做。否则优化器可能会做傻事。我最近就碰到这样的情况。这几个表是三层分级关系:category, subcategory和item。有几千条
记录
在category表,几百条
记录
在subcategory表,以及几百万条在item表。你可以忽略category表了,我只是交代一下背景,以下
查询
语句都不涉及到它。这是创建表的语句:[sql] 代码如下:create table subcategory (
select id,goods_id,create_time,price from mkt_price_control
where 1=1 and price_id = 1 and goods_id = 598915619202568300
ORDER BY create_time desc
结果集 1):
check the manual that corresponds to your
MySQL
server version for the right syntax to use near '-10,10'
发现是这样的:
order by create_time desc limit -10,10
分页
查询
,怎么可能从-10开始呢
然后看参数
发现currentPage是0,
查询
当然从第一页开始了。如果当前页是0那么是-10到10,如果当前页是1,就不会报错了。
hospital_ids AS hospital_id,
operation_type_id AS bd_id,
row_number() over(PARTITION by hospital_ids order by id desc) as rn
tb_hospital_bd_log
WHERE
operation_type = 2
SELECT *
from t1 WHERE rn = 1
数据
库三大范式
第一范式 [1NF]:指在关系模型中,所有表中的列都应该是原子性的。(即:每一列属性都是不可再分的属性值,确保每一列的原子性,不可再分)
第二范式 [2NF]:在第一范式的基础上,非码属性必须完全依赖于候选码。(即:要求其他字段都依赖于主键,没有部分依赖)
第三范式 [3NF]:在第二范式基础上,任何非主属性不依赖于其它非主属性。(即:消除传递依赖,消除冗余,就是一个表中不能包含有其他表的非主键字段信息)
MySQL
存储引擎MyISAM与InnoDB区别
MySQL
中常用的存储引擎主要有:I
其中,table_name用于指定要
查询
的表名,date_column用于指定包含日期的列名,specific_date则是要
查询
的日期。可以根据需要将其替换为具体的表名、列名和日期。
ORDER BY id DESC的作用是将
查询
结果按照id列进行倒序排列,这样就能保证
查询
结果中编码相同的
记录
按照时间顺序排列。
最后
使用LIMIT 1语句,只取
查询
结果中的第
一条
记录
,即为日期相同编码的
最后
一条
记录
。
对于日期相同编码不存在的情况,
查询
结果将为空。