求一条SQL语句、所有日期内表一不包涵表2的数据、分天计算(200)

  • 主题发起人 主题发起人 bx59830
  • 开始时间 开始时间
B

bx59830

Unregistered / Unconfirmed
GUEST, unregistred user!
求一条SQL语句 求在所有日期中表一不包涵表2的数据,由表一与表二得到表三表一 表二 ┏━━━━┳━━━┓ ┏━━━┓ ┃ 日期 ┃ 姓名 ┃ ┃ 姓名 ┃ ┣━━━━╋━━━┫ ┣━━━┫ ┃2009-5-4┃ 张三 ┃ ┃ 张三 ┃ ┣━━━━╋━━━┫ ┣━━━┫ ┃2009-5-4┃ 李四 ┃ ┃ 李四 ┃ ┣━━━━╋━━━┫ ┣━━━┫ ┃2009-5-4┃ 赵玲 ┃ ┃ 赵玲 ┃ ┣━━━━╋━━━┫ ┗━━━┛ ┃2009-5-5┃ 赵玲 ┃ ┣━━━━╋━━━┫ ┃2009-5-5┃ 张三 ┃ ┣━━━━╋━━━┫ ┃2009-5-6┃ 赵玲 ┃ ┣━━━━╋━━━┫ ┃2009-5-6┃ 赵四 ┃ ┣━━━━╋━━━┫ ┃2009-5-7┃ 李四 ┃ ┗━━━━┻━━━┛最终结果表三 ┏━━━━┳━━━┓ ┃ 日期 ┃ 姓名 ┃ ┣━━━━╋━━━┫ ┃2009-5-5┃ 李四 ┃ ┣━━━━╋━━━┫ ┃2009-5-6┃ 张三 ┃ ┣━━━━╋━━━┫ ┃2009-5-7┃ 张三 ┃ ┣━━━━╋━━━┫ ┃2009-5-7┃ 赵玲 ┃ ┗━━━━┻━━━┛最好用一条语句完成,不要用临时表,谢谢。
 
使用SQL子查询 Not In 语法
 
能给个示范吗?
 
你查一下SQL帮助文件,里面有的是例子
 
子查询是个不错的选择,但日期如何加上。如表三???
 
select 日期,姓名 from 表一 where 姓名 not in (select 姓名 from 表二)
 
也可以采用外连接查询.从查询效率上,外连接查询在有索引的条件下效率很高!
 
select 日期,姓名 from 表一 where 姓名 not in (select 姓名 from 表二) 这条语句有问题,如果表一中不包涵表二的数据就查不出来。我要的是在某一天表一中不包含表二的数据。表二中没有日期,查寻结果最好同时加上日期。
 
select a.姓名,b.日期 from 表二 a ,(select 日期 from 表一 group by 日期) b where a.姓名,b.日期 not in (select 姓名,日期 from 表一)
 
感觉你好像在查找缺席的人员Select A.*From (Select 日期, 姓名 from (Select distinct 日期 from 表一) AS X , 表二 ) AS A Left Join 表一 B On A.日期=B.日期 And A.姓名=B.姓名Where B.日期 Is Null
 
赞成楼上的观点!
 
select a.姓名,b.日期 from 表二 a ,(select 日期 from 表一 group by 日期) b where a.姓名,b.日期 not in (select 姓名,日期 from 表一) 在执行以上语名时提示:在应用条件的上下文(在','附近)中指定了非布尔类型的表达式。Select A.*From (Select 日期, 姓名 from (Select distinct 日期 from 表一) AS X , 表二 ) AS A Left Join 表一 B On A.日期=B.日期 And A.姓名=B.姓名Where B.日期 Is Null 能通过但数据为空
 
Select *From Awhere exists ( Select 姓名 from B where A.日期=B.日期 )
 
Select A.*From (Select 日期, 姓名 from (Select distinct 日期 from 表一) AS X , 表二 ) AS A Left Join 表一 B On A.日期=B.日期 And A.姓名=B.姓名Where B.日期 Is Null 能通过但数据为空 ?-------------------------------我在access中建立了2个表,名字没有更改,就是表一和表二,把你的数据也输入进去了,结果出现了5条记录( 比你多一条 2009-5-6┃ 李四, 原因是你上面写的是 2009-5-6┃ 赵四)。-------------------------SQL Server 测试后,也是上面的结果,有5条记录。自己再检查检查吧。
 
znxia 是正确的!
 
znxia,kaida都是数据库高手!
 
接收答案了。
 
后退
顶部