2017-05-10 10 views
0

이것은 나에게 힘든 일입니다. 사용자 알림이 포함 된 표가 있습니다. "열람 됨"열이 있습니다. 0은 보지 않았 음을 의미하고, 1은 열람됨을 의미합니다.MYSQL LIMIT "보는 것"= 1, 그러나 보지 않은 값 = "0"

알림 목록을 생성하고 싶습니다. SELECT *는 읽지 않은 상태 (0)이지만 표시되지 않은 알림이없는 경우 표시하려는 "알림 없음"을 표시하고 싶지 않습니다. 몇 가지 오래된 것들.

나는 가장 최근의 미공개 영상을 이미 보여주고 있습니다. 검토되지 않은 것을 보여줄 수있는 방법이 있습니까? 아래처럼?

$QUERY= "SELECT * FROM point_member_notifications WHERE account_id='$accountid' ORDER BY viewed ASC, created_date DESC (LIMIT 10 WHERE VIEWED='1') " 

답변

0

아마 당신은 단지 SELECT

(SELECT * FROM point_member_notifications WHERE account_id='$accountid' ORDER BY viewed ASC) 
UNION ALL 
(SELECT * FROM point_member_notifications WHERE account_id='$accountid' WHERE VIEWED='1' created_date DESC LIMIT 10); 
+0

당신 말이 맞아요. 그리고 당신이 먼저 대답했습니다. 사실 너무 간단한 솔루션입니다. –

0

당신은 LIMIT와 UNION의 조합을 사용할 수 묶 괄호 안에 limit 절을 놓고 'VIEWED' 옛 사람을 제한, UNION ALL 할 (또는 중복 레코드를 제거하지 않으려는 경우 UNION ALL). 당신이 보지 않은 10 개 개의 레코드 + 너무 괄호 안에 2 SELECT를 둘 필요가 10 개 옛 기록을 가지고 싶다면, 그렇지 않으면 마지막에 LIMIT (10) 전체를 제한 할 것이다,

(SELECT * 
FROM point_member_notifications WHERE account_id='$accountid' AND VIEWED='1' 
ORDER BY created_date DESC LIMIT 10) 
UNION ALL 
SELECT * 
FROM point_member_notifications WHERE account_id='$accountid' AND VIEWED='0' 
ORDER BY created_date DESC 
LIMIT 10 

: 그건처럼 볼 수 있었다. UNION이 이미 검토되지 않은 항목을 먼저 선택한 다음 다른 항목을 선택하기 때문에 ORDER BY가 필요하지 않습니다.