mysql-忽略mysql表中的重复值

时间:2016-10-05 06:07:53

标签: mysql

我有一个存储用户登录信息的表。 表将用户的登录信息存储到特定系统。因此,当用户登录系统时,它会保存在我的表中,状态字段设置为1.

这是我的表结构:

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

您知道,身份1002016-10-01上签了3次,身份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

1 个答案:

答案 0 :(得分:1)

以下是否适合您?

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

这里的重要部分是为每个用户提供每天数据的组。 Order by仅用于按照您想要的顺序返回数据