mysql에는 연령 그룹을 저장하는 필드가 있습니다. 형식은 그림과 같습니다. 0-0이면 무제한입니다
현재 요구사항은 연령대를 기준으로 검색하는 것입니다. 예를 들어 25~34세의 모든 데이터를 찾고 싶습니다.
여기서 문제가 발생합니다. and를 사용하면 결과가 거의 나오지 않고, or를 사용하면 결과가 더 많아지지만 분명히 결과가 정확하지 않습니다. 정확하게 찾는 방법
제가 현재 사용하고 있는 방법은
입니다. 답변주신 모든 분들께 감사드립니다.SELECT age FROM
jobs
WHERE ((substring_index(age,'-',1) >= 16 OR substring_index(age,'-',-1) = 0) OR (substring_index(age,'-',- 1) <= 24)) AND !(substring_index(age,'-',1) = 0 AND substring_index(age,'-',-1) = 0);
거의 효과가 없는데 뭔가 이상한 느낌
말씀하신 대로 30-55가 25-34와 일치하면 이렇게 될 수도 있겠네요
으아아아이것은 판단하기 어렵습니다. 30-55가 원하는 25-34의 조건을 충족합니까? 아니면 25~34 사이여야 하나요? 특정 요구 사항에 따라 다릅니다
데이터 테이블 구조가 왜 이렇게 되어 있는지 너무 궁금합니다. 테이블 구조가 이렇게 설계되어 있다면 왜 25~34세 사이의 데이터를 가져와야 할까요? 나이는 특정 범위가 아니라 특정 값이 아니라 테이블 구조를 다시 디자인해야 하며 실수하지 마세요
1. 이렇게 연령대를 저장하면 연령대를 구분하는 키를 하나 더 만들어야 하나요?
2. 스크린샷에는 1-5, 2-6, 3-4 등의 스팬 디자인도 나와 있습니다. 사용자가 3을 선택한다면 어떤 것을 선택해야 할까요?
MySQL에 내장된 기능을 이해하지 못하는 사람들이 다른 사람들에게 무작위로 지침을 제공하는 경우가 많습니다
문제의 원인은 데이터베이스 설계가 불합리하다는 것입니다
추상적인 사고를 통해 다시 생각해 보는 것이 좋습니다. 테이블의 age 필드에 저장된 정보를 세트 A로 생각하고 어디에 있는 조건을 세트 C로 생각하세요. 최종 결과는 어떤 상황에 부합해야 할까요?
세트 A와 세트 C에는 교차점이 있습니다
세트 A는 세트 C
세트 C는 세트 C
이를 기준으로 현재 테이블 구조는 확실히 적합하지 않습니다. 데이터 양이 크지 않으면 오프라인으로 데이터를 정리하고 연령 필드를 하한과 상한으로 분할한 다음 컬렉션 필터링 방법을 사용할 수 있습니다. 많이.
귀하의 테이블 구조는 귀하가 언급한 기능을 구현할 수 없습니다