sql >> Database >  >> RDS >> Mysql

Hoe kan ik een kolom weglaten uit de SELECT-instructie terwijl ik deze in de HAVING-clausule gebruik?

U kunt de subquery verplaatsen naar de having clausule. Zoals Gordon antwoordde, gebruik je de having clausule als een tweede where , die alleen MySQL ondersteunt. Het is beter om de tweede voorwaarde toe te voegen aan de where met 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

Op basis van uw opmerking zou dit een beetje eenvoudiger zijn. Het selecteert de 15 berichten met de hoogste evenement-ID:

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


  1. Wat is de maximale lengte van een tabelnaam in Oracle?

  2. Normalisatie maakt joins over meerdere tabellen moeilijk

  3. Python JSON-encoder om datetime te ondersteunen?

  4. Detecteren of een waarde ten minste één numeriek cijfer bevat in PostgreSQL