제목을 검색하고 다른 열을 사용하여 고유성을 확인하는 방법
P粉244155277
P粉244155277 2024-04-02 21:49:55
0
1
524

데이터베이스에 일부 스크랩된 제품 데이터가 있는데 내 웹사이트에서 사용하고 싶습니다. 제목이 "%EXAMPLE%"인 모든 항목을 반환하지만 고유한 제품만 반환하는 쿼리를 작성하고 싶습니다.

문제는 1개의 항목에 대해 여러 행이 있고 제품당 1개의 행만 반환하고 싶다는 것입니다(매일 스크래핑 중이므로 매일 항목당 추가 행을 얻습니다). 행 간의 유일한 차이점은 날짜와 가격이 다르다는 것입니다. 왜냐하면 그것이 제가 찾고 있는 가격 내역이기 때문입니다.

예: 핑크색 초콜릿, 핑크색 사과, 핑크색 배 등 3가지 품목이 있습니다. 3번 긁었기 때문에 항목당 3줄이 있습니다. 예를 들어(이 예에서는 다른 모든 열을 추가하지 않았습니다):

제품 ID 제목 가격 사용 가능
ABC123DEF 핑크 사과 0.47 1
ABC123DEF 핑크 사과 0.42 1
ABC123DEF 핑크 사과 0.41 1
ABC333FHG 핑크 배 0.41 1
ABC333FHG 핑크 배 0.41 1
ABC333FHG 핑크 배 0.41 1
FH5845FJG 핑크 초콜릿 0.41 1
FH5845FJG 핑크 초콜릿 0.41 1
FH5845FJG 핑크 초콜릿 0.41 1

내가 얻고 싶은 결과는 다음과 같습니다.

제품 ID 제목 가격 사용 가능
ABC123DEF 핑크 사과 0.47 1
ABC333FHG 핑크 배 0.41 1
FH5845FJG 핑크 초콜릿 0.41 1

올바른 결과를 얻으려면 제목을 검색한 다음 중복된 제품 ID를 필터링해야 하는 것 같습니다. 하지만 어떻게 해야 할지 모르겠습니다.

어떤 아이디어가 있나요?

P粉244155277
P粉244155277

모든 응답(1)
P粉298305266

예:

으아아아

쿼리는 각 제품 ID의 최고 가격 행을 저장하고 해당 제품의 다른 행을 삭제합니다.

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=40df8e8e4b3eb206e0f73b7ce3a70a a5一个>

참고 - 저장해야 하는 모든 전체 행은 고유합니다(삭제해야 하는 행에는 완전한 중복이 있을 수 있음).


으아아아

이 쿼리에서는 행이 고유할 필요가 없으며, 이 경우 행의 단일 복사본만 반환됩니다. 모든 복사본이 필요한 경우 ROW_NUMBER() 대신 RANK() 또는 DENSE_RANK()를 사용하세요.


MySQL 5.x 버전용 솔루션.

으아아아

이 쿼리는 복제본이 있는 경우 모든 복제본을 반환합니다. 복사본이 하나만 필요한 경우 DISTINCT를 추가하세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿