当前位置: 首页 >> Mysql >> mysql 获取最小时间的行记录 >> 正文

mysql 获取最小时间的行记录

3年前 (2017-01-08)     作者:4869     分类:Mysql     阅读次数:3107     评论(0)    文章页统计代码
-- 【错误写法】利用排序+分页,你会发现得不到正确结果,百度其他人原因有种说法是:
-- 在同时使用order by和limit时,MySQL进行了某些优化,将语句执行逻辑从"where——order by——limit"
-- 变成了"order by——limit——where",导致在某些情况下,
-- 同时使用order by和limit会导致查无结果(或结果数量不足)。具体出现问题与否是与表中数据有关的。
SELECT * FROM wms_material_io WHERE 1=1
    AND WML_COMPAYN_ID=2
    AND WML_MATERIALS_CODE='xxxxxxxxxxx'
    AND WML_DEL=0
ORDER BY WML_CREATETIME ASC
LIMIT 0,1;


-- 【正确用法】需要加个子查询
SELECT * FROM (
    	SELECT * FROM wms_material_io WHERE  1=1
    		AND WML_COMPAYN_ID=2
    		AND WML_MATERIALS_CODE='xxxxxxxxxxx'
    		AND WML_DEL=0
    	ORDER BY WML_CREATETIME ASC) AS tmp_wml
LIMIT 1;


-- 使用子查询(排序+分组)
SELECT * FROM wms_material_io
WHERE WML_ID in(
	SELECT WML_ID FROM wms_material_io 
	WHERE 1=1
		AND WML_COMPAYN_ID=2
		AND WML_MATERIALS_CODE='xxxxxxxxxxx'
		AND WML_DEL=0
	ORDER BY WML_CREATETIME ASC
)
GROUP BY WML_MATERIALS_CODE, WML_COMPAYN_ID;


除非注明,发表在“石马人山的博客”的文章『mysql 获取最小时间的行记录』版权归4869所有。 转载请注明出处为“本文转载于『石马人山的博客』原地址http://longlonggo.com/post/332.html
文章页分享代码

评论

发表评论   

昵称*

E-mail*(建议输入,以便收到博主回复的提示邮件)

网站