조건에 따라 5 개의 결과를 반환하는 쿼리를 작성하는 방법에 대한 도움이 필요합니다.
그리고이 다섯 가지 결과에서 쿼리에 지정된 경우 레코드 중 하나가 항상 나타나야합니다.
나머지는 무작위로 선택됩니다. 캐나다, 중국, 프랑스, 독일, 일본, 미국
나는 기록이 범주 : 자본, 랜드 마크, FLAG, 언어하나의 특정 결과 + 임의 결과로 쿼리를 작성하는 데 도움이 필요합니다.
나는 기록을 가지고 국가의 테이블 국가, 카테고리, 질문
이
각 질문은 CATEGORY 및 COUNTRY에 따라 분류됩니다.
이제 국가를 선택할 때마다 항상 CATEGORY "CAPITAL"이라는 질문을 항상 결과에 표시하고 싶습니다.
그래서 프랑스를 선택하면 결과 중 하나에 자본금이 있고 다른 4 개가 무작위로 선택되는 경우 프랑스에 관한 5 가지 질문을 선택해야합니다.
내 솔루션은이 개 질문을하는 것입니다하지만 난 그게 올바른 있는지 모른다 :
SELECT * FROM QUESTIONS WHERE COUNTRY = "FRANCE" AND CATEGORY = "CAPITAL"
및
SELECT * FROM QUESTIONS WHERE COUNTRY = "FRANCE" AND CATEGORY != "CAPITAL" ORDER BY RAND() LIMIT 4
후 바로 결과를 추가합니다.
나는 임의의 레코드를 선택할 수 있기 전에 레코드를 정렬해야하기 때문에 RAND() 함수를 사용하는 것이 단점을 가지고 있다고 들었습니다. 따라서 수천 개의 레코드가있는 경우에는 사용하지 않는 것이 좋습니다.
이렇게 할 수있는 더 좋은 방법이 있다면 누구든지 도울 수 있다면 많이 고맙게 생각합니다.
미리 감사드립니다.
+1, 이것이 가장 효율적인 해결책이라고 생각합니다. – Pateman
특히 '녹색'은 아닙니다. 질의에있는 한 다른 색상이 될 수 있습니다. 결과에 4 개의 임의 색상을 사용해야합니다. – user949000
@ user949000 그런 다음 제안 된 첫 번째 옵션에 대해 말합니다. 행의 "고정"상태를 나타내는 열을 추가하십시오 . 관리 측에서 열의 기본값은 0이며, 1 이상의 고정 행을 계획하는 경우 1로 설정할 수 있습니다. – Slava