Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[MySQL 5.7] HAVING clause is not in GROUP BY clause

Pagina: 1
Acties:

Vraag


Acties:
  • 0Henk 'm!

  • gnoe93
  • Registratie: september 2016
  • Laatst online: 14-07 23:54
Ik heb volgende query en snap niet goed waarom ik hier volgende error bij krijg:

Error in query (1055): Expression #1 of HAVING clause is not in GROUP BY clause and contains nonaggregated column 'db.inner_user.display_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
    outer_user.id,
    outer_user.display_name
FROM
    `user` outer_user
WHERE
    LOWER(outer_user.display_name) IN (
        SELECT
            LOWER(inner_user.display_name) AS lower_display_name
        FROM
            `user` inner_user
        GROUP BY
            lower_display_name
        HAVING
            COUNT(lower_display_name) > 1
    )


Er wordt toch op display name geaggregeerd? Dus waarom deze error? Als ik de subquery apart uitvoer lukt dit zonder problemen:

code:
1
2
3
4
5
6
7
8
        SELECT
            LOWER(inner_user.display_name) AS lower_display_name
        FROM
            `user` inner_user
        GROUP BY
            lower_display_name
        HAVING
            COUNT(lower_display_name) > 1

Alle reacties


Acties:
  • 0Henk 'm!

  • gnoe93
  • Registratie: september 2016
  • Laatst online: 14-07 23:54
Montaner schreef op zondag 5 juli 2020 @ 22:15:
GROUP BY COUNT(lower_display_name)
Je kan toch niet groupen op een aggregatiefunctie?

Acties:
  • 0Henk 'm!

  • gnoe93
  • Registratie: september 2016
  • Laatst online: 14-07 23:54
Ik weet niet zeker of ik helemaal begrijp wat je bedoelt, maar wil je zeggen dat `inner_user.display_name` en `lower_display_name` als 2 aparte kolommen gerekend worden?

Als dat zo is, waarom lukt het uitvoeren van de subquery apart wel? Het is geen correlated subquery, dus die zou toch compleet geisoleerd uitgevoerd moeten worden?
Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True