• Baby Shoggoth [she/her]
    link
    fedilink
    English
    011 months ago

    having is less annoying way of not doing needless/bug-prone repetition. if you select someCalculatedValue(someInput) as lol you can add having lol > 42 in mysql, whereas without (ie in pgsql) you’d need to do where someCalculatedValue(someInput) > 42, and make sure changes to that call stay in sync despite how far apart they are in a complex sql statement.

    • Doc Avid Mornington
      link
      fedilink
      English
      111 months ago

      Postgres has the having clause. If it didn’t, that wouldn’t work, as you can’t use aggregates in a where. If you have to make do without having, for some reason, you can use a subquery, something like select * from (select someCalculatedValue(someInput) as lol) as stuff where lol > 42, which is very verbose, but doesn’t cause the sync problem.

      Also, I don’t think they were saying the capability having gives is bad, but that a new query language should be designed such that you get that capability without it.