Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich eine Spalte aus der SELECT-Anweisung weglassen, während ich sie in der HAVING-Klausel verwende?

Sie können die Unterabfrage nach having verschieben Klausel. Wie Gordon geantwortet hat, verwenden Sie den having -Klausel als zweites where , die nur MySQL unterstützt. Es ist besser, die zweite Bedingung zum where hinzuzufügen mit 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

Aufgrund Ihres Kommentars wäre dies etwas einfacher. Es wählt die 15 Beiträge mit der höchsten Ereignis-ID aus:

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