반응형
식물 테이블이 있다고 가정 해 보겠습니다.
id fruit
1 banana
2 apple
3 orange
할 수 있어요
SELECT * FROM plant ORDER BY id;
SELECT * FROM plant ORDER BY fruit DESC;
이것은 명백한 일을합니다.
그러나 나는 이것에 물렸다. 이것은 무엇을 하는가?
SELECT * FROM plant ORDER BY SUM(id);
SELECT * FROM plant ORDER BY COUNT(fruit);
SELECT * FROM plant ORDER BY COUNT(*);
SELECT * FROM plant ORDER BY SUM(1) DESC;
이 모든 것은 첫 번째 행 (id = 1) 만 반환합니다.
해결 방법
표의 열 대신 집계 값을 실제로 선택하면 결과가 더 명확 해집니다.
SELECT SUM(id) FROM plant ORDER BY SUM(id)
이것은 모든 ID의 합계를 반환합니다. 집계는 항상 하나의 행만 생성하므로 순서를 지정할 필요가 없기 때문에 이것은 물론 쓸모없는 예입니다. 쿼리에서 행 qith 열을 얻는 이유는 MySQL이 무작위가 아니라 결정적이지 않은 하나의 행을 선택하기 때문입니다. 귀하의 경우 테이블의 첫 번째 열이지만 다른 열은 스토리지 엔진, 기본 키 등에 따라 다른 행을 얻을 수 있습니다. 따라서 ORDER BY 절에서만 집계는 그다지 유용하지 않습니다.
일반적으로 원하는 작업은 특정 필드별로 그룹화 한 다음 어떤 방식 으로든 결과 집합을 정렬하는 것입니다.
SELECT fruit, COUNT(*)
FROM plant
GROUP BY fruit
ORDER BY COUNT(*)
이제 더 흥미로운 쿼리입니다! 그러면 해당 과일의 총 개수와 함께 각 과일에 대해 하나의 행이 제공됩니다. 사과를 더 추가하면 주문이 실제로 이해되기 시작합니다.
완전한 표 :
+----+--------+
| id | fruit |
+----+--------+
| 1 | banana |
| 2 | apple |
| 3 | orange |
| 4 | apple |
| 5 | apple |
| 6 | banana |
+----+--------+
위의 쿼리 :
+--------+----------+
| fruit | COUNT(*) |
+--------+----------+
| orange | 1 |
| banana | 2 |
| apple | 3 |
+--------+----------+
참조 페이지 https://stackoverflow.com/questions/13099282
반응형
'MySql' 카테고리의 다른 글
MySQL Postgresql에서 MySQL의 ORDER BY FIELD () 시뮬레이션 (0) | 2021.01.23 |
---|---|
MySQL XAMPP 및 phpMyAdmin을 통해 MySQL에 액세스 할 수 없습니다. (0) | 2021.01.22 |
MySQL PHP MySQL-만료 날짜 = 오늘 날짜 + 7 일 모두 선택 (0) | 2021.01.22 |
MySQL PHP 오류 : "참조로 매개 변수 2를 전달할 수 없습니다." (0) | 2021.01.22 |
MySQL 현재 날짜를 MySQL 데이터베이스에 삽입하는 방법은 Java를 사용합니까? (0) | 2021.01.22 |
댓글