이제 소설 정보 테이블 A(소설의 요약 정보)가 있습니다. 소설의 장 정보는 소설 ID가 100%인 테이블 B에 배치됩니다(예를 들어 테이블 A의 소설 ID는 다음과 같습니다). 1245이면 해당 챕터 데이터는 테이블 Chapter_45에 배치되며, 소설 정보는 ID별로 100장에 무작위로 배포됩니다. , 이제 테이블 B의 장 수(count(*))에 따라 역순으로 정렬된 테이블 A의 새로운 정보를 알아보고 싶습니다. 다음과 같은 SQL 문을 작성했습니다. select i.id,i.siteid,count(*) as s from ptcms_novelsearch_info as i join ptcms_novelsearch_chapter_i.id0 as c on c.novelid = i.id and c.siteid=i.siteid GROUP BY i.id order by s desc limit 20
;
이 보고합니다. 0 구문 오류입니다. 챕터 테이블을 확인할 수 없기 때문에(100개의 새로운 챕터 정보 테이블이 있음) 마스터에게 이 요구 사항을 실현하는 방법을 문의하세요.
이것은 수평 테이블 파티셔닝의 개념입니다. 100개 테이블의 정보를 확인하려면 인스턴스의 데이터베이스로 이동해야 합니다. 어떤 테이블에 원하는 데이터가 저장되어 있는지 모르기 때문에 확인하려면 모든 테이블을 유니온해야 합니다. 이는 분명히 불합리한 일이므로 비즈니스 모델에서는 테이블 분할을 사용해야 합니다. 예를 들어 mycat의 도움으로 테이블 A와 B를 신규 ID에 따라 테이블로 나누기만 하면 됩니다. mycat을 선택하고 A.id에서 A 조인 B를 직접 선택하세요.
테이블 이름은 변수이므로 직접 사용할 수 없습니다. SQL 문을 연결하려면 동적 SQL을 사용해야 합니다.