Неправильный синтаксис рядом с группой ключевых слов

#sql

#sql

Вопрос:

Здравствуйте, я пишу sql-запрос, но я получаю синтаксическую ошибку в строке с GROUP BY. В чем может быть проблема.

 SELECT au_lname, au_fname, t.title_id
from authors As a INNER JOIN
titleauthor As ta On a.au_id = ta.au_id INNER JOIN
titles As t On t.title_id = ta.title_id
ORDER BY au_lname, au_fname
GROUP BY au_lname
  

Комментарии:

1. Нет особого смысла применять GROUP BY, если вы также не используете агрегатную функцию. Что вы пытаетесь сделать?

2. Избавьтесь от повторяющихся результатов в результирующей таблице

3. это лучше сделать с помощью DISTINCT

Ответ №1:

Поместите GROUP BY перед ORDER BY. Кроме того, все поля, включенные в select, должны либо находиться в инструкции GROUP BY, либо находиться внутри агрегатной функции.

Попробуйте это:

 SELECT au_lname, au_fname, t.title_id
from authors As a INNER JOIN
titleauthor As ta On a.au_id = ta.au_id INNER JOIN
titles As t On t.title_id = ta.title_id
GROUP BY au_lname, au_fname, t.title_id
ORDER BY au_lname, au_fname
  

Если вы просто хотите избавиться от повторяющихся результатов, вы также можете использовать ключевое слово DISTINCT:

 SELECT DISTINCT au_lname, au_fname, t.title_id
from authors As a INNER JOIN
titleauthor As ta On a.au_id = ta.au_id INNER JOIN
titles As t On t.title_id = ta.title_id
ORDER BY au_lname, au_fname
  

Ответ №2:

Общий синтаксис для инструкции select является

 SELECT select_list
[INTO new_table_]
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC] ;
  

итак, в вашем случае

 SELECT au_lname, au_fname, t.title_id
from authors As a INNER JOIN
titleauthor As ta On a.au_id = ta.au_id INNER JOIN
titles As t On t.title_id = ta.title_id
GROUP BY au_lname
ORDER BY au_lname, au_fname
  

Комментарии:

1. Это не сработает. Выберите поля au_fname и t.title_id должен быть либо помещен в группу by, либо агрегирован с помощью агрегатной функции.