mysql选择行_mysql – 选择它周围的行和行

只能为UNION’d查询定义一个ORDER BY子句.使用UNION或UNION ALL无关紧要. MySQL确实支持UNION’d查询部分的LIMIT子句,但如果没有定义顺序的能力,它就相对无用.

MySQL还缺少排名功能,您需要处理数据中的空白(由于条目被删除而丢失).唯一的选择是在SELECT语句中使用递增变量:

SELECT t.id,

@rownum := @rownum+1 as rownum

FROM MEDIA t, (SELECT @rownum := 0) r

现在我们可以得到一个连续编号的行列表,所以我们可以使用:

WHERE rownum BETWEEN @midpoint - ROUND(@midpoint/2)

AND @midpoint - ROUND(@midpoint/2) +@upperlimit

使用7作为@midpoint的值,@ midpoint – ROUND(@ midpoint / 2)返回值4.要获得总共10行,请将@upperlimit值设置为10.这是完整查询:

SELECT x.*

FROM (SELECT t.id,

@rownum := @rownum+1 as rownum

FROM MEDIA t,

(SELECT @rownum := 0) r) x

WHERE x.rownum BETWEEN @midpoint - ROUND(@midpoint/2) AND @midpoint - ROUND(@midpoint/2) + @upperlimit

但是如果你仍然想使用LIMIT,你可以使用:

SELECT x.*

FROM (SELECT t.id,

@rownum := @rownum+1 as rownum

FROM MEDIA t,

(SELECT @rownum := 0) r) x

WHERE x.rownum >= @midpoint - ROUND(@midpoint/2)

ORDER BY x.id ASC

LIMIT 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值