홈>
테이블 사용자와 이미지 및 제품과 같은 다른 테이블이 있습니다
테이블 사용자 :
user_id user_name
1 andrew
2 lutz
3 sophie
4 michael
5 peter
6 oscor
7 anton
8 billy
9 henry
10 jon
테이블 이미지 :
user_id img_type img_url
1 0 url1
1 1 url4
2 0 url5
7 0 url7
8 0 url8
9 1 url9
테이블 제품
user_id prod_id
1 5
1 55
2 555
8 5555
9 5
9 55
이 종류의 SELECT를 사용합니다 :
SELECT * FROM
(SELECT user.user_id,user.user_name, img.img_type, prod.prod_id FROM
users
LEFT JOIN images img ON img.user_id = users.user_id
LEFT JOIN products prod ON prod.user_id = users.user_id
WHERE user.user_id <= 5) AS users
ORDER BY user.user_id ASC
결과는 다음과 같아야합니다. 성능 향상으로 인해 ORDER BY와 내부 선택을 사용합니다. 내부 또는 외부 선택 내에 LIMIT 5를 넣으면 작동하지 않습니다. MySQL은 결과를 5로 제한하지 않습니다. 그러나 LIMIT 5 (페이지 매김)가 필요한 경우 고유 user_id 결과를 찾았 으며이 경우 9로 이어질 것입니다. if-statement를 사용하여 찾은 user_id로 배열을 푸시하고 배열이 5 개의 UID로 구성 될 때 선택을 중단/종료 할 수 있습니까? 아니면 어떻게 든 선택을 수정할 수 있습니까?
user_id user_name img_type prod_id
1 andrew 0 5
1 andrew 1 5
1 andrew 0 55
1 andrew 1 55
2 lutz 0 5
2 lutz 0 55
3 sophie null null
4 michael null null
5 peter null null
results: 9
- 답변 # 1
관련 자료
- JQuery를 사용하여 동적 HTML 테이블에서 선택한 행 값을 얻는 방법은 무엇입니까?
- Python을 사용하여 Selenium에서 선택한 텍스트 옵션을 얻는 방법은 무엇입니까?
- javascript - Jquery를 사용하여 부모 HTML 선택기로 확인란 선택 제한
- python - Pandas 데이터 프레임에서 groupby를 사용하여 고유 값 계산
- '고유'에 대한 번역 필드를 사용하면 NameError, django-parler가 발생합니다
- sql - group by 절을 사용하여 결과 결합
- python - while 루프를 사용하여 목록에서 선택한 값을 인쇄하는 방법
- extjs - 참조를 사용하여 선택한 버튼에서 이벤트를 발생시키는 방법
- javascript - Div 이름이 고유하지 않을 때 jQuery를 사용하여 Div에서 텍스트 가져 오기
- laravel - Yajra 데이터 테이블에서 페이지 당 결과를 제한하는 방법
- reactjs - 페이지 매김이 제어 된 react-table을 사용하여 다른 페이지에 있더라도 선택한 모든 행을 제거합니다
- python - 고유 문자를 사용하여 2 바이트 연결/분할
- javascript - React를 사용하여 다른 사용자를 선택할 때 목록에서 사용자를 선택 해제하는 방법은 무엇입니까?
- 고유 벡터에 대한 입력을 사용하는 것은 R 반짝임에서 작동하지 않습니다
- aspnet C # 자바 스크립트 기능을 사용하여 gridview에서 선택한 행 가져 오기
- finder - MacOS는 Spotlight 결과를 app 파일로 제한합니다
관련 질문
- mysql : jmerise export는 mariadb에서 가져올 때 구문 오류를 제공하지만 스크립트에서 구문 오류를 찾을 수 없습니다.
- MySQL에서 열 (InnoDB)이있는 페이지 오버플로는 어떻게 작동합니까?
- mysql : MariaDB 성능 최적화
- MySQL MyIsam 압축 테이블
- server : MariaDB : ERROR 2002 (HY000) : '/var/run/mysqld/mysqld.sock'소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다. (2)
- mysql : 가중치가있는 임의의 행을 찾습니다. 또는 열 값을 기준으로 한 행을 여러 행으로 분할
- Maria DB Docker 이미지에 연결하는 방법-MYSQL Workbench 또는 SQL Developer 사용
- javascript : MariaDB에서 테이블을 만드는 짧은 스크립트
- mysql : CREATE FUNCTION에서 SQL 오류 (1064) 발생 (42000)
- mysql : findAll로 데이터를 가져오고 동일한 요청의 다른 관련 항목에서 두 개의 개수를 반환합니다.
LIMIT 5
그리고user_id <= 5
반드시 동일한 결과를 제공하지는 않습니다. 한 가지 이유 :JOINs
이후에 여러 행이 있습니다. )user_id = 1
. 지정된 '사용자'에 대해 여러 이미지 및/또는 여러 제품이있을 수 있기 때문입니다.먼저 원하는 것을 결정하십시오.
LIMIT
ORDER BY
없이 임의의 행 집합을 제공합니다. (예, 다소 예측 가능하지만이에 의존해서는 안됩니다).ORDER BY + LIMIT
보통은 잠재적으로 관련된 모든 행을 수집하고 정렬 한 다음 "제한"을 수행하는 것을 의미합니다. 이 부진과 관련하여때로는방법이 있습니다.LEFT
NULLs
로 연결 당신은 얻었다;그걸 원 했니?페이지 당 5 개의 항목을 표시하지만 사용자 1에게는 6 개의 이미지가있는 경우 페이지 매김을 어떻게 하시겠습니까? 솔루션에 대한 도움을 받으려면이 엣지 사례를 고려해야합니다. 어쩌면 5를 초과하더라도 사용자 1의전체를 원하십니까? 아마도 당신은 '1'의 중간에 침입하고 싶을 것입니다. 하지만 다음 페이지에서 어디로 가야할지 알 수있는 명확한 방법이 필요합니다.
아마도 실행 가능한 솔루션은 중첩 된
SELECTs
를 사용하지 않을 것입니다 . 알다시피 "오류"로 이어집니다. 다음과 같이 생각하십시오. 먼저 모든 페이지에 표시해야하는 모든 행을 찾으십시오.그런 다음현재 페이지에 대해 5를 새깁니다.여기에 페이지 매김에 대한 몇 가지 생각이 있습니다 : http://mysql.rjweb.org/doc.php/pagination