Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso omettere una colonna dall'istruzione SELECT mentre la utilizzo nella clausola HAVING?

Puoi spostare la sottoquery su having clausola. Come ha risposto Gordon, stai usando il having clausola come un secondo where , che solo MySQL supporta. È meglio aggiungere la seconda condizione a 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

In base al tuo commento, questo sarebbe un po' più semplice. Seleziona i 15 post con l'ID evento più 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
        )