tablas - MySql Query, seleccione mayor que
porque se dañan las tablas en mysql (4)
Tengo una tabla, llamada faq_questions con la siguiente estructura:
id int not_null auto_increment,
question varchar(255),
sort_order int
Estoy intentando crear una consulta que, dado un orden de clasificación, selecciona la fila con el siguiente orden de clasificación más alto.
Ejemplo:
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
Bien, imagina que paso 5 para mi orden de clasificación conocido (id 4), necesito devolver la fila con id 3. Como no hay garantía de que sort_order sea contiguo, no puedo simplemente seleccionar known_sort_order + 1.
¡Gracias!
Parece demasiado simple, pero parece lo que necesitas:
SELECT id,question FROM `questions`
WHERE `sort_order` > sort_order_variable
ORDER BY sort_order ASC
LIMIT 1
SELECT
id, question, sort_order
FROM faq_questions
WHERE sort_order in
(SELECT
MIN(sort_order)
FROM faq_questions
WHERE sort_order > ?);
Eso parece funcionar
SELECT * FROM table_name WHERE sort_order > 5 ORDER BY sort_order ASC LIMIT 1
Puedes hacerlo con TOP
o LIMIT
:
SELECT TOP 1 * FROM faq_questions
WHERE sort_order > 5
ORDER BY sort_order ASC
pero eso no es tan elegante o portátil como
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