簡體   English   中英

MySql Query,選擇大於

[英]MySql Query, Select greater than

我有一個名為faq_questions的表,其結構如下:

id int not_null auto_increment,
question varchar(255),
sort_order int

我正在嘗試構建一個給定排序順序的查詢,選擇具有下一個最高排序順序的行。

例:

id  question                sort_order
1   'This is question 1'    10
2   'This is question 2'    9
3   'This is another'       8
4   'This is another one'   5
5   'This is yet another'   4

好吧,所以想象一下我傳入5表示已知的排序順序(id 4),我需要它返回id為3的行。由於不能保證sort_order是連續的,所以我不能只選擇known_sort_order + 1。

謝謝!

看起來太簡單了,但它看起來像你需要的:

SELECT id,question FROM `questions` 
WHERE `sort_order` > sort_order_variable
ORDER BY sort_order ASC 
LIMIT 1
SELECT * FROM table_name WHERE sort_order > 5 ORDER BY sort_order ASC LIMIT 1

你可以使用TOPLIMIT來做到這一點:

SELECT TOP 1 * FROM faq_questions
WHERE sort_order > 5
ORDER BY sort_order ASC

但這並不像優雅或便攜

SELECT *  
FROM faq_questions AS f1  
LEFT JOIN faq_questions AS f2  
    ON f1.sort_order > f2.sort_order  
    AND f2.sort_order = 5  
LEFT JOIN faq_questions AS f3  
    ON f3.sort_order BETWEEN f1.sort_order AND f2.sort_order  
WHERE f3.id IS NULL
SELECT 
    id, question, sort_order
FROM faq_questions 
WHERE sort_order in 
(SELECT 
        MIN(sort_order) 
    FROM faq_questions 
    WHERE sort_order > ?);

這似乎有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM