Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

121
Views
Mezclar resultados de 2 consultas MySQL diferentes para un feed de usuario

Quiero hacer un feed personalizado primitivo en un sitio web NodeJS+MySQL . Ahora solo selecciono todas las publicaciones que tienen etiquetas específicas:

 SELECT column1, column2... FROM table WHERE tags = users_tags ORDER BY relavance LIMIT 8;

También quiero incluir un par de publicaciones populares, por ejemplo:

 SELECT column1, column2... FROM table ORDER BY relevance LIMIT 2;

No quiero usar UNION porque quiero conservar el orden de mi primera selección e insertar un resultado popular para cada quinta publicación. Ej.: relevante, relevante, relevante, relevante, popular, relevante...

Por ahora, tengo results1.concat(results2) que los agrega como los dos últimos y los devolvió. Luego tuve un ciclo for que agregaría el HTML normalmente para los primeros 4 y luego uno desde atrás para cada 5.

¿Hay alguna solución mejor?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Lo que podría usar, es row_number para definir el orden de clasificación

 SELECT column1,column2 FROM (SELECT column1,column2,IF(rn = 1, B,D) as sortorder FROM (SELECT column1, column2, ROW_NUMBER() OVER(ORDER BY relavance) rn FROM table1 ORDER BY relavance LIMIT 2) t1 UNION SELECT column1,column2,IF(rn < 5, A,C) as sortorder FROM (SELECT column1, column2, ROW_NUMBER() OVER(ORDER BY relavance) rn FROM table1 WHERE tags = users_tags ORDER BY relavance LIMIT 8) t2) t3 ORDER BY sortorder
about 4 years ago · Juan Pablo Isaza Report

0

Puede usar la función de ventana ROW_NUMBER() para clasificar por separado las publicaciones con etiquetas específicas y las publicaciones populares y luego hacer una ordenación condicional:

 WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY tags = users_tags ORDER BY relevance) rn FROM tablename ) SELECT * FROM cte ORDER BY CASE WHEN tags = users_tags THEN rn + FLOOR((rn - 1) / 4) ELSE (4 + 1) * rn END LIMIT 10;

Cambie 4 a la cantidad de publicaciones con etiquetas específicas que desea en cada bloque.

Vea una demostración simplificada.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!