MySQL 1064 Ошибка. Как решить синтаксическую ошибку? - PullRequest
0 голосов
/ 26 сентября 2019

Мне нужна была помощь, потому что я новичок в MYSQL. Я пытался найти другие посты, потому что эта ошибка ни к чему не привела.

У вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с «SELECT max (count) from (Выберите активность, количество (*) из группы FRIENDS по активности» в строке 7

Почему этогенерируется ошибка и как это исправить?

SELECT activity
FROM (SELECT activity, count(*) FROM FRIENDS GROUP BY activity) AS getActivities
WHERE count NOT IN (
    SELECT min(count)
        FROM (SELECT activity, count(*) FROM FRIENDS GROUP BY activity ) AS maximum,
    SELECT max(count)
        FROM (SELECT activity, count(*) FROM FRIENDS GROUP BY activity) AS minimum
)

Ответы [ 3 ]

0 голосов
/ 26 сентября 2019

Это ваш запрос:

select activity
from (Select activity, count(*)
      from FRIENDS
      group by activity
     ) as getActivities
where count not in (Select min(count) from (Select activity, count(*) from FRIENDS group by activity ) as maximum,
                    SELECT max(count) from (Select activity, count(*) from FRIENDS group by activity) as minimum
                   );

У вас есть несколько ошибок.Например:

  • count(*) не имеет псевдонима столбца.Но ему нужно имя, потому что оно находится в подзапросе.
  • Подзапрос не имеет псевдонима таблицы.
  • Подзапросы во внешнем where имеют круглые скобки.
  • The , подразумевает, что вы намерены использовать подзапросы как скалярные подзапросы, но они могут возвращать несколько строк.

Я думаю, что вы намереваетесь:

select f.activity
from friends f
group by f.activity
having count(*) > (select count(*)
                   from friends f2
                   group by f2.activity
                   order by count(*) asc
                   limit 1
                  ) and
       count(*) < (select count(*)
                   from friends f2
                   group by f2.activity
                   order by count(*) desc
                   limit 1
                  );
0 голосов
/ 26 сентября 2019

Как исправить.

select activity from ( Select activity, count(*) as count from FRIENDS group by activity) as getActivities
     where count not in  
 (
   Select min(count) as count from (Select activity, count(*) from FRIENDS group by activity ) as maximum
   union all
   SELECT max(count) as count from (Select activity, count(*) from FRIENDS group by activity) as minimum
 )
0 голосов
/ 26 сентября 2019

В вашей строке sql есть ошибка:

  • Не псевдоним (*) столбец

  • Нет таблицы группы 2 в условии нев

Давайте попробуем этот запрос:

SELECT activity 
FROM ( SELECT activity, COUNT(*) AS Number FROM FRIENDS GROUP BY activity) AS getActivities
WHERE Number NOT IN (SELECT MIN(Number) FROM (SELECT activity, COUNT(*) AS Number FROM FRIENDS GROUP BY activity )  AS maximum)
AND Number NOT IN (SELECT MAX(Number) FROM (SELECT activity, COUNT(*) AS Number FROM FRIENDS GROUP BY activity) AS minimum)
...