我有一个简单的 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/