2016-10-05 3 views
1

사용자 로그인 정보를 저장하는 테이블이 있습니다. 테이블은 사용자의 로그인 정보를 특정 시스템에 저장합니다.mysql- mysql 테이블에서 중복 값을 무시합니다.

CREATE TABLE IF NOT EXISTS `login_info` (
    `id` int(11) NOT NULL, 
    `staffID` int(11) NOT NULL, 
    `logDate` date NOT NULL, 
    `status` int(11) NOT NULL 
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1; 

것입니다, 사용자 기록의 일부는 다음과 같습니다 : 그래서, 시스템에 대한 사용자 로그인이, 그것은 내 테이블에 저장할 정보 및 상태 필드가 1

로 설정되어있는 경우이 내 테이블 구조 복제하고 나는 그들을 피하려고 노력하고있다. 즉, 몇 명의 사용자가 시스템에 두 번 이상 로그인하는 것입니다. 따라서 특정 날짜에 둘 이상의 레코드가있을 수 있으며 다른 날에는 전혀 로그인하지 않은 경우 레코드가 없을 것입니다.

당신은 알고
INSERT INTO `login_info` (`id`, `staffID`,`logDate`, `status`) VALUES 
(1, 100, '2016-10-01',1), 
(2, 100, '2016-10-01',1), 
(3, 100, '2016-10-01',1), 
(4, 101, '2016-10-01',1), 
(5, 101, '2016-10-01',1), 
(6, 102, '2016-10-01',1), 

(7, 100, '2016-10-02',1), 
(8, 101, '2016-10-02',1), 
(9, 101, '2016-10-02',1), 
(10, 102, '2016-10-02',1), 
(11, 103, '2016-10-02',1), 

(12, 100, '2016-10-03',1), 
(13, 101, '2016-10-03',1), 
(14, 102, '2016-10-03',1), 
(15, 103, '2016-10-03',1), 

(16, 100, '2016-10-04',1), 
(17, 100, '2016-10-04',1), 
(18, 102, '2016-10-04',1), 
(19, 103, '2016-10-04',1); 

, ID 1032016-10-01에 3 번에 확인 ID 100 및 직원과 직원이 모두 로그인하지 않았다 :

나는 데이터의 샘플을했다.

저는 매일 생각 나는 레코드를 가져 오려고합니다. 나는 생각하지 않습니다.

는 여기에 내가 내가 무엇을 찾고 가져 오는 아니에요

select staffID from login_info WHERE logDate >= '2016-10-01' AND status=1; 

select logDate from login_info WHERE logDate >= '2016-10-01' AND status=1; 

을 시도한 FIDDLE

입니다.

내가 달성하기 위해 노력하고있어 무엇 :

id staffID logDate  status 
3  100  2016-10-01  1 
5  101  2016-10-01  1 
6  102  2016-10-01  1 
7  100  2016-10-02  1 
9  101  2016-10-02  1 
10 102  2016-10-02  1 
11 103  2016-10-02  1 
12 100  2016-10-03  1 
13 101  2016-10-03  1 
14 102  2016-10-03  1 
15 103  2016-10-03  1 
17 100  2016-10-04  1 
18 102  2016-10-04  1 
19 103  2016-10-04  1 
+0

10 월 2 일 이후 날짜를 지정하는 조건이 있습니다. 왜 10 월 1 일부터 기록을 얻을 수 있습니까? – Mureinik

+0

오타라고 생각하십시오. 지금 바로 수정하십시오. @Mureinik @ –

답변

1

겠습니까 당신을 위해 다음과 같은 작업을? 당신이 2016-10-01을 포함 할 경우

SELECT * FROM login_info 
WHERE logDate >= '2016-10-02' 
AND status=1 
GROUP BY staffId, logDate 
ORDER BY logDate; 

, 당신은 당신이 여기 매일 각 사용자에 대한 데이터를 제공하는 그룹이다 logDate >= '2016-10-02

중요한 부분을 변경해야합니다. 주문은 원하는 순서대로 데이터를 반환 할 수 있습니다.

관련 문제