2014-09-20 2 views
0

php/sql을 사용하여 데이터베이스에서 데이터를 가져옵니다. 데이터를 검색하는 SQL 코드빈도수에 따라 여러 값 정렬

SELECT user_id 
FROM table 
WHERE (field_id = 16 AND value BETWEEN 1 AND 100) 
OR (filed_id = 17 AND value BETWEEN 1 AND 100) 

(또는 ▶의 여러 것 또는 1 또는 0)

이며 그런

$arry = {4,1,5,4,1,5} 

어떤 유사한 값의 배열을 반환 . 내가

SELECT user_id 
FROM table 
WHERE (field_id = 16 AND value BETWEEN 1 AND 100) 
OR (filed_id = 17 AND value BETWEEN 1 AND 100) 
GROUP BY user_id 

처럼 뭔가 쿼리를 변경하면이 나타나는 가장 흔한 USER_ID가 내림차순으로 먼저 있도록 어떻게 결과를 구성 할 수 있습니다

$arry = {1,4,5} 

뭔가를 반환?

SELECT count(user_id) AS cnt, user_id 
FROM table 
WHERE (field_id = 16 AND value BETWEEN 1 AND 100) 
OR (filed_id = 17 AND value BETWEEN 1 AND 100) 
ORDER BY cnt 

나는 이와 비슷한 쿼리를 시도했지만 모든 결과가 망가졌습니다.

답변

2
SELECT user_id,COUNT(*) 
FROM table 
WHERE (field_id = 16 AND value BETWEEN 1 AND 100) 
OR (filed_id = 17 AND value BETWEEN 1 AND 100) 
GROUP BY user_id 
ORDER BY COUNT(*) DESC