mysql-忽略mysql表中的重复值

mysql-忽略mysql表中的重复值

问题描述:

我有一个存储用户登录信息的表。 表将用户的登录信息存储到特定系统。因此,当用户登录到系统时,它保存在我的表和状态字段设置为1mysql-忽略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; 

事情是,一些用户记录复制,我试图避免它们。我的意思是,一些用户不止一次登录系统。因此,在特定的一天中,他们可能会有多条记录,而在另一天,如果他们根本没有登录,他们将不会有任何记录。

我做了数据的样本:

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); 

你知道,在3次检查了2016-10-01 ID 100和工作人员ID 103人员没有登录的。

我试图为每一天提取不同的记录,这不是我以前认为的方式。

这里有一个FIDDLE

我试图

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; 

这不是什么获取我所期待的。

这就是我想要实现:

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 –

会为你下面的工作?

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

如果你想包括2016-10-01,您需要更改为logDate >= '2016-10-02

的重要组成部分,这里是它给你的每一个用户的每一天的数据组。排序方式仅限于以您想要的顺序返回数据