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
答
会为你下面的工作?
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
的重要组成部分,这里是它给你的每一个用户的每一天的数据组。排序方式仅限于以您想要的顺序返回数据
您有条件指定日期应该从10月2日开始 - 为什么您会从10月1日起获取记录? – Mureinik
考虑到这是一个错字。现在纠正它。 @Mureinik –