Demon413 Ответов: 2

В чем разница между order by и group by ?


Я изучаю функцию SQL , поэтому я пробую эти статменты :

SELECT `umeta_id` FROM `wp_usermeta` where umeta_id < 7 order by meta_key
и выход был :

6
4
2
3
1
5


и я тоже стараюсь :

SELECT `umeta_id` FROM `wp_usermeta` where umeta_id < 7 group by meta_key
и выход был :
6
4
2
3
1
5


так в чем же разница между этими двумя функциями ? а когда я должен использовать group by или order by ?

Что я уже пробовал:

то, что я пишу выше в двух утверждениях .

2 Ответов

Рейтинг:
1

CPallini

Что ж, ORDER заказы пока GROUP, ... группы!

Попробуйте, например:

CREATE TABLE PERSON(
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL
);

INSERT INTO PERSON VALUES ('JOHN', 40);
INSERT INTO PERSON VALUES ('JACK', 20);
INSERT INTO PERSON VALUES ('JIM', 40);
INSERT INTO PERSON VALUES ('JANE', 20);


а потом разница между ними:
SELECT AGE FROM PERSON ORDER BY AGE;
и
SELECT AGE FROM PERSON GROUP BY AGE;


Demon413

не очень хороший ответ на самом деле, и все еще не понимаю ....

CPallini

Тот факт, что вы все еще не можете понять, не делает автоматически классифицировать ответ как плохой :P
Я предлагаю вам прочитать учебник по SQL.

Рейтинг:
0

CHill60

Решение 1 на самом деле является очень хорошим примером, но вам придется запустить SQL, чтобы увидеть это.

Ваш вопрос должен был быть помечен как MySQL, так как если вы запустите свой второй запрос с MS Sql Server, вы получите сообщение об ошибке

Цитата:
Столбец "wp_usermeta.umeta_id" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.
Это может на самом деле дать вам намек на разницу.

ORDER BY изменяет приказ в котором возвращаются строки. Оно ВИДЫ данные, основанные на имени столбца, которое вы ему даете.

GROUP BY группирует данные вместе-это инертные материалы (группы) информация. Обычно вы видите, что он используется с такими функциями, как SUM, COUNT, AVG и т.д.

Используя ту же таблицу, что и Решение 1, этот запрос
SELECT [NAME],AGE FROM PERSON ORDER BY AGE;
давать результат
JACK	20
JANE	20
JOHN	40
JIM	40
20 предшествует 40, поэтому сначала перечисляются все строки с возрастом 20 лет, а затем все строки с возрастом 40 лет.

Этот запрос
SELECT AGE, COUNT([NAME]) FROM PERSON GROUP BY AGE;
давать результат
20	2
40	2
Другими словами, есть 2 строки, которые имеют возраст = 20 и 2 строки, которые имеют возраст = 40


ZurdoDev

+5. Хорошее объяснение.