mysql - 遍历 MySQL 行

标签 mysql

我有一个简单的 MySQL 表,由单词和关联的数字组成。每个单词的数字都是唯一的。我想找到索引大于给定数字的第一个单词。例如:

-----------------------
| WORD:    | F_INDEX: |
|---------------------|
| a        | 5        |
| cat      | 12       |
| bat      | 4002     |
-----------------------

如果我得到数字“9”,我希望返回“cat”,因为它是索引大于 9 的第一个单词。

我知道我可以通过查询获得已排序行的完整列表:

SELECT * FROM table_name ORDER BY f_index;

但是,相反,我想创建一个执行此操作的 MySQL 查询。 (混淆在于我不确定如何跟踪查询中的当前行)。我知道可以用这样的循环:

CREATE PROCEDURE looper(desired_index INT)
BEGIN 
    DECLARE current_index int DEFAULT 0
    // Loop here, setting current_index to whatever the next rows index is, 
    // then do a comparison to check it to our desired_index, breaking out 
    // if it is greater.
END;

如有任何帮助,我们将不胜感激。

最佳答案

试试这个:

SELECT t.word
     , t.f_index
  FROM table_name t
 WHERE t.f_index > 9 
 ORDER 
    BY t.f_index
 LIMIT 1

让数据库返回您需要的行比提取一大堆行并找出您需要的行要高效得多。

为了这个查询的最佳性能,你需要一个索引ON table_name (f_index,word)

关于mysql - 遍历 MySQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14555671/

相关文章:

mysql - 将多行合并为一行

mysql - 在Netbeans制作的jsp网站中配置web主机mysql数据库

MySQL:为什么这个 SQL 查询不使用索引?

php在谷歌搜索中获取变量

PHP/SQL 检查数据库中是否已存在类似条目

mysql - 在 mysql 中使用 not in in 子句进行更新

mysql - 按值对选择

mysql - 将聚合字符串函数与子查询结合使用

mysql - 将大型 html 文本存储在数据库中

java - 数据检索 - 带有 Eclipse 的 JDBC