如何查询一年,一月,一周 不存在的表记录 如何查询一年,一月,一周 不存在的表记录 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 (不要高估你的汉语表达能力或者我的汉语理解能力) 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。 create table cardtime( `ID` int(10) NOT NULL auto_increment, `SID` varchar(20) default '0', //卡号ID `DateTime` varchar(10) default NULL, //时间) ENGINE=MyISAM DEFAULT CHARSET=utf8create table personinfo( `ID` int(10) NOT NULL auto_increment, `Sid` varchar(50) NOT NULL default '0', //卡号ID `Sname` varchar(50) default NULL,) ENGINE=MyISAM DEFAULT CHARSET=utf8需要查询一年没有在这表里的记录SELECT u.rfidno from personinfo as p left join(SELECT SID FROM cardtime where DateTime like '2012%' ) as c on p.Sid=c.SID where c.SID is null 这个只能查一次,并且过滤掉了重复的,不知道怎么弄了。 卡号 姓名 时间(这个时间是根据没有在cardtime表里没有显示的时间) 001 张三 2012-05-16 002 李四 2012-05-16 001 张三 2012-05-17 001 张三 2012-05-18 001 张三 2012-05-19 select * from personinfo pwhere not exists (select 1 from cardtime where SID=p.SID and DateTime>'2012'); cardtime表中的一条记录,就表示某个SID在DateTime时存在打卡记录?现在你想获得该SID,在2012全年没有打卡的日期,理解对否? 是啊,不是一个SID哦,是所有SID都要列出来哦 你是想做左连接查询吧先生成一个表,只有一个日期字段然后跟你现在的这张表做左连接就行了然后没打卡的那天就会是一个日期加一堆NULL mysql好用的操作类,谁给介绍一个 怎样从一组不连续的数字中选出跳过了那些数字? 关于mysql服务 过几分钟就自动关闭的问题(比较奇怪) 求一个单表的SQL语句 联表更新跨表数据? Mysql客户端中文显示问题 200分:Mysql查询问题请教。 再次提问,求一SQL, 下列条件的SQL如何写? 如果获取LAST_INSERT_ID()数据 mysql model index field error错误 在线等 急 mysql和mssql数据的实时同步问题...
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
(
`ID` int(10) NOT NULL auto_increment,
`SID` varchar(20) default '0', //卡号ID
`DateTime` varchar(10) default NULL, //时间
) ENGINE=MyISAM DEFAULT CHARSET=utf8create table personinfo
(
`ID` int(10) NOT NULL auto_increment,
`Sid` varchar(50) NOT NULL default '0', //卡号ID
`Sname` varchar(50) default NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8
需要查询一年没有在这表里的记录
SELECT u.rfidno from personinfo as p left join(SELECT SID FROM cardtime where DateTime like '2012%' ) as c on p.Sid=c.SID where c.SID is null 这个只能查一次,并且过滤掉了重复的,不知道怎么弄了。
卡号 姓名 时间(这个时间是根据没有在cardtime表里没有显示的时间)
001 张三 2012-05-16
002 李四 2012-05-16
001 张三 2012-05-17
001 张三 2012-05-18
001 张三 2012-05-19
where not exists (select 1 from cardtime where SID=p.SID and DateTime>'2012');
是啊,不是一个SID哦,是所有SID都要列出来哦
先生成一个表,只有一个日期字段
然后跟你现在的这张表做左连接就行了
然后没打卡的那天就会是一个日期加一堆NULL