sql >> Databáze >  >> RDS >> Mysql

Jak mohu vynechat sloupec z příkazu SELECT při jeho použití v klauzuli HAVING?

Poddotaz můžete přesunout do having doložka. Jak Gordon odpověděl, používáte having klauzuli jako druhou where , který podporuje pouze MySQL. Je lepší přidat druhou podmínku do where pomocí 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

Na základě vašeho komentáře by to bylo o něco jednodušší. Vybere 15 příspěvků s nejvyšším ID události:

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. Omezení, které umožňuje pouze jedné ze dvou tabulek odkazovat na základní tabulku

  2. Uložená procedura MySQL vs. složitý dotaz

  3. Jaký je správný způsob uložení těchto dat ve schématu MySQL?

  4. Nevýhody ukládání celého čísla jako řetězce v databázi