una tablas recomendaciones queries porque optimizador lento lenta las dañan cuello consulta consejos como botella agilizar sql mysql

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