一个关于MySQL瞎探讨

Posted daylog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个关于MySQL瞎探讨相关的知识,希望对你有一定的参考价值。

一个关于mysql瞎探讨

闲暇的时候自己做着玩的小object,需要一个上一篇下一篇的sql语句这就是扯淡的故事背景!

假设当前有表 log ,字段 id,title,共7条记录.当前已知 id=4,请查找出 id>4 和 id <4  的id记录, 要求用一条sql语句.为了实现程序优化,如此逼迫自己,也是带有极致的自虐倾向,

题目出来了,想了好久,当时一门心思用子查询实现,在验证了不知道几次后,看到数据库的语法报错,一度怀疑,这个想法的可行性.于是想几个伙伴发出求解的QQ消息,结果都是懵逼,

当我删除代码放弃这烧脑的想法时,忽然就那么醒悟了.我可以类链接呀

语句

SELECT a.id,a.title,b.id AS id2,b.title AS title2 FROM log AS a  INNER JOIN log AS b WHERE a.id < 4 AND b.id > 4 ORDER BY a.id DESC LIMIT 1 
结果

id   title           id2    title2

3 这是一篇日志 5 我的活着是为了等死

我擦,真的可以吗?冷静后仔细一思考,这样的查询会在id等于最大/最小值时,就查不到数据了,比如id是7和1,不太完美但也还可以,好评4分吧

我把这个语句,发给伙伴们.不久后好消息结着就到了,伙伴给出的语句

SELECT id,title FROM log WHERE id IN (  (SELECT max(id) FROM log WHERE id < 4),4,(SELECT min(id) FROM log WHERE id > 4))
结果也是可行的,不过得到数据还要2次处理,并且这条语句是近似一条语句的子查询语句,(应该不是很贴题)好评4分

这条也是子查询的方法,不在表述

SELECT id,title FROM log WHERE id = (SELECT id FROM log WHERE id<4 ORDER BY id DESC LIMIT 1) OR id = (SELECT id FROM log WHERE id>4 ORDER BY id ASC LIMIT 1)

在分享一条扯淡的sql

SELECT id-1,title FROM log WHERE id >2;

扯了好久,也没个5分的答案,可能是老张才学疏浅,期待大神的执笔赐教!

以上是关于一个关于MySQL瞎探讨的主要内容,如果未能解决你的问题,请参考以下文章

亮瞎双眼的闪光灯

MySQL经典案例分析关于数据行溢出由浅至深的探讨

今天瞎写的关于XML的一些。

技能篇:关于缓存数据的一致性探讨

MySQL 5.5主从关于‘复制过滤’的深入探究

关于shared pool的深入探讨 转载