2011-09-09 2 views
1

그래서 1 인당 "좋아"하는 3 가지 질문을하는 데 필요한 1-8 명이있는 시나리오가 있습니다. 내가MYSQL LIMIT 1 인당 사용 방법

SELECT liked FROM likeTable WHERE uid IN (uid1,uid2,uid3,uid4) LIMIT 12 

로 설정 쿼리를 가지고 있지만 난 12 때 분명히 이것은 잠재적으로 중지 할 수 있습니다 내가 ALL 예를 들어 UNION을 사용하는 등 가능한 해결책을 읽을 0에서 나머지를 떠나, UID1은 "좋아"...

(SELECT liked FROM likeTable WHERE uid = uid1 LIMIT 3) 
UNION ALL 
(SELECT liked FROM likeTable WHERE uid = uid2 LIMIT 3) 
UNION ALL 
(SELECT liked FROM likeTable WHERE uid = uid3 LIMIT 3) 
UNION ALL 
(SELECT liked FROM likeTable WHERE uid = uid4 LIMIT 3) 

그리고 나는 forloop와 PHP에서 SQL 쿼리 문자열을함으로써이를 달성 할 수있을 것입니다, 그러나 이것은 내 데이터를 쿼리하는 효율적인 방법인가?

참고 : 난 내 autoincrementing 열

감사하다 likeID DESC BY 주문을 추가 할 수 있다면 좋을 텐데하지만 난 정말, (가) "좋아"를 검색하는 순서에 대해 걱정하지 않는다!

+1

가능한 복제본 http://stackoverflow.com/questions/2000744/mysql-limit-results-per-category 및 http://stackoverflow.com/questions/2129693/mysql-using-limit-within-group- 그룹당 결과를 얻으려면 –

+0

시도 :'SET @cnt : = 0; SELECT b.liked FROM like 테이블 \t INNER JOIN like 테이블 b ON a.uid = b.uid AND (@cnt : = @cnt - 1)> 0 여기서 uid는 (uid1, uid2, uid3, uid4) cnt : = 3 LIMIT 12' – Dor

답변

0

카테고리 (사용자 수는 적지 만)가 적을 때는 공용 솔루션을 사용하십시오.

그리고이 for 루프를 사용하여 PHP에서 sql 쿼리 문자열을 작성하여이 작업을 수행 할 수 있습니까? 그러나 이것이 내 데이터를 쿼리하는 효율적인 방법입니까?

Definitelly yes! 한 번에 수백 명의 사용자에게 질문하지 않는 한. 1 ~ 8 명에게는 완벽한 솔루션입니다!