Простое предложение WHERE, нарушающее SQL-запрос - PullRequest
0 голосов
/ 16 января 2020

У меня есть рабочий запрос:

SELECT tlt.name AS theme, COUNT(*) AS nsets
    FROM tlt
    INNER JOIN sets
    ON tlt.id = sets.theme_id
    GROUP BY tlt.name
    ORDER BY nsets DESC;

Но когда я добавляю предложение WHERE, sqlite выдает синтаксическую ошибку "рядом" с предложением WHERE

SELECT tlt.name AS theme, COUNT(*) AS nsets
    FROM tlt
    INNER JOIN sets
    ON tlt.id = sets.theme_id
    GROUP BY tlt.name
    WHERE nsets > 50
    ORDER BY nsets DESC;

Я запутался почему это простое предложение WHERE нарушает этот запрос.

1 Ответ

5 голосов
/ 16 января 2020
Предложение

A WHERE должно быть до GROUP BY, а не после. Но вы не можете использовать псевдоним или статистическую функцию в предложении WHERE, поэтому вам нужно использовать HAVING COUNT(*) > 50 там, где у вас есть предложение WHERE.

SELECT tlt.name AS theme, COUNT(*) AS nsets
FROM tlt
INNER JOIN sets
ON tlt.id = sets.theme_id
GROUP BY tlt.name
HAVING COUNT(*) > 50
ORDER BY nsets DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...