sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo omitir una columna de la declaración SELECT mientras la uso en la cláusula HAVING?

Puede mover la subconsulta al having cláusula. Como respondió Gordon, estás usando el having cláusula como un segundo where , que solo admite MySQL. Es mejor agregar la segunda condición al where con and :

SELECT e.id
FROM events e
WHERE author_id = 32
    AND e.id >= (SELECT MIN(u.id) id
        FROM (SELECT MIN(id) id
            FROM events
            WHERE author_id = 32
            GROUP BY type, post_id, table_code, comment_id, context
            ORDER BY MIN(id) desc 
            LIMIT 15) as u
        ) 
ORDER BY id DESC

Según tu comentario, esto sería un poco más simple. Selecciona las 15 publicaciones con el id de evento más alto:

SELECT  id
FROM    events
WHERE   author_id = 32
        AND post_id IN
        (
        SELECT  DISTINCT post_id
        FROM    events
        ORDER BY
                id DESC
        LIMIT   15
        )