如何查询一年,一月,一周 不存在的表记录
       
       

解决方案 »

  1.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式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)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    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
      

  3.   

    select * from personinfo p
    where not exists (select 1 from cardtime where SID=p.SID and DateTime>'2012');
      

  4.   

    cardtime表中的一条记录,就表示某个SID在DateTime时存在打卡记录?现在你想获得该SID,在2012全年没有打卡的日期,理解对否?
      

  5.   


    是啊,不是一个SID哦,是所有SID都要列出来哦
      

  6.   

    你是想做左连接查询吧
    先生成一个表,只有一个日期字段
    然后跟你现在的这张表做左连接就行了
    然后没打卡的那天就会是一个日期加一堆NULL