sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag utelämna en kolumn från SELECT-satsen när jag använder den i HAVING-satsen?

Du kan flytta underfrågan till having klausul. Som Gordon svarade använder du having sats som en andra where , som endast MySQL stöder. Det är bättre att lägga till det andra villkoret till where med 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

Baserat på din kommentar skulle detta vara lite enklare. Den väljer de 15 inläggen med högsta event-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. Så här grupperar du efter månad från datumfältet med sql

  2. Nackdelar med att lagra ett heltal som en sträng i en databas

  3. syntaxfel, oväntat 'mysql_connect' (T_STRING)

  4. Laravel Migration Error:Syntaxfel eller åtkomstöverträdelse:1071 Angiven nyckel var för lång; max nyckellängd är 767 byte