【问题标题】:MySQL order by limitMySQL按限制排序
【发布时间】:2019-04-07 03:22:50
【问题描述】:

我试图理解一个复杂的 MYSQL 过程的以下 sn-p,其中 var1、var2、var3 和 var4 是声明的变量:

select col1, col2, col3, col4
from table
order by col1 limit 5, 1 into var1, var2, var3, var4;

特别是,我不知道上面插入到 var1、var2、var3 和 var4 中的是什么。

更一般地说,我不明白以下在 MYSQL 中的作用:

select...limit ..., 1 into

任何帮助都会很棒!

【问题讨论】:

  • 它正在选择第 6 行值(根据 col1 的升序确定)到 var1、var2 等..
  • @MadhurBhaiya 看起来是这样。你能解释一下为什么吗?非常感谢
  • 您可以查看已经发布的满意答案

标签: mysql


【解决方案1】:

让我们剖析查询。

select col1, col2, col3, col4 from table;

这将为您提供表格中的所有行,但只有 4 列。

select col1, col2, col3, col4 from table order by col1;

现在您正在按照 col1 的升序对结果进行排序。

select col1, col2, col3, col4 from table order by col1 limit 5, 1;

这里的5offset1 是实际的limit,这会将您的结果集减小到1。

offset 是什么意思?

假设您从第二个查询中获得 10 个结果。然后,第三个查询将从第 6 行开始为您提供结果,并受所传递的限制(在本例中为 1)的限制。因此,您只会得到具有四个值的一行。

into 是做什么的?

它只是将这 4 个结果的值存储到这 4 个变量中。

【讨论】:

  • 谢谢,回复非常简洁!
【解决方案2】:

所以 LIMIT 可以取两个参数 LIMIT offset, count

offset 是您要返回的第一行的偏移量(例如第 1 行的偏移量为 0)

count 是要返回的最大行数

如果您只传递一个参数,那么这只是一个计数,因此 LIMIT 5 将返回表中的前 5 行。

所以您的查询返回第 6 行中 col1、col2、col3 和 col4 的 4 个值,然后将这些值返回到 var1、var2、var3、var4

(我想……我已经有一段时间没用过类似的东西了……所以我会被纠正)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2013-02-09
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多