Tengo una tabla y quiero obtener 15 valores con un pedido y 15 con otro orden. El objetivo es obtener exactamente 30 valores distintos.
Este es mi código:Seleccionar con UNION pero limitar cada subconsulta y recibir valores distintos
(SELECT * FROM table1 WHERE criteria ORDER BY views DESC LIMIT 15)
UNION All
(SELECT * FROM table1 WHERE criteria ORDER BY date_upload DESC LIMIT 15)
sé cómo llevar a cabo la tarea con dos consultas (con NO EN), pero hay una manera de hacer que en una consulta?
'UNION ALL' no necesariamente le dará 30 * valores * distintos (cada una de las dos consultas podría incluir el mismo registro); use en cambio 'UNION DISTINCT' (u omita' DISTINCT' ya que es el valor predeterminado). Para limitar a * exactamente * 30 resultados, primero debe decidir de cuál de las dos consultas se obtendrá un registro adicional si los 15 primeros de cada intersección. – eggyal
Dice _distinct values_ pero está devolviendo todas las columnas en table1. ¿Hay solo una columna? – Bridge
¿Qué sucede si ambas subselects devuelven el mismo registro? ¿Tendrás 29 registros como resultado? ¿O tendrá 30 registros (de qué tabla obtendrá un registro adicional?) –