С вашей стороны произошла синтаксическая ошибка, поэтому я быстро исправил ваш запрос, чтобы ограничить трудности.Обратите внимание на условие CASE и его дополнительные скобки:
SELECT
*
FROM USERS
WHERE
status != 'ACTIVATED'
ORDER BY
CASE
WHEN ((select count(ID) FROM USERS WHERE status != 'ACTIVATED') > 10) then id
ELSE created
END
ASC
LIMIT 10
EDIT : также договорились о практике создания отдельного представления для каждого действия чтения, которое можно объединить в другое) запросы.Т.е. отдельное представление:
CREATE VIEW 'my_view' as
SELECT *
FROM USERS
WHERE
status != 'ACTIVATED'
Используя представления, вы можете дополнительно оптимизировать выполнение sql и сделать его несколько более простым в целом.Это особенно важно, когда вам нужно объединить такие представления с другими, более сложными представлениями.
Я быстро добавил пример синтаксиса представления, так что он не готов к производству или желаемый шаблон для использования при созданииviews. Большинство созданных представлений также определяют определитель безопасности, вызывающие программы, в более старых версиях mysql (и mariadb и других форках mysql) люди также указывают, использовать sql_cache или нет и т. д.