는 다음과 같은 구조를 가진 테이블라는 이름의 책을 갖는 선택MySQL은 서수
╔════════════╦═══════════╦════════╗
║ LibraryId ║ BookId ║ Price ║
╠════════════╬═══════════╬════════╣
║ 123 ║ 9001 ║ 10.99 ║
║ 123 ║ 9005 ║ 12.99 ║
║ 123 ║ 9006 ║ 7.99 ║
║ 124 ║ 8012 ║ 6.49 ║
║ 124 ║ 9001 ║ 3.19 ║
║ 124 ║ 9076 ║ 7.39 ║
╚════════════╩═══════════╩════════╝
나는 전체 테이블을 반환하는 선택을 할 수있는 방법을하지만, 추가로, 서수라는 이름의 그 필드 "계산"수 도서관 당 도서 수
╔════════════╦═══════════╦════════╦════════╗
║ LibraryId ║ BookId ║ Price ║Ordinal ║
╠════════════╬═══════════╬════════╬════════╣
║ 123 ║ 9001 ║ 10.99 ║ 1 ║
║ 123 ║ 9005 ║ 12.99 ║ 2 ║
║ 123 ║ 9006 ║ 7.99 ║ 3 ║
║ 124 ║ 8012 ║ 6.49 ║ 1 ║
║ 124 ║ 9001 ║ 3.19 ║ 2 ║
║ 124 ║ 9076 ║ 7.39 ║ 3 ║
╚════════════╩═══════════╩════════╝════════╝
내가 좋아하는 뭔가를 시도 :
SET @var_record = 1;
SELECT *, (@var_record := @var_record + 1) AS Ordinal
FROM books;
을하지만이 관계없이 libraryId의 카운트 계속 결과는 무엇인가처럼 보일 것입니다. 도서관이 바뀔 때마다 서수를 재설정 할 무언가가 필요합니다. 절차 대신 단일 쿼리를 선호합니다.
테스트 데이터는 SQL 스크립트 :
create temporary table books(libraryId int, bookId int, price double(4,2));
insert into books (libraryId, bookId, price) values (123, 9001, 10.99),(123, 9005, 10.99),(123, 9006, 10.99),(124, 8001, 10.99),(124, 9001, 10.99),(124, 9076, 10.99);
집계 된 함수 USE 집계 된 함수 – progrAmmar