两个字段组合成唯一记录的情况下怎样查询?

niuzhouhai 2011-12-14 09:43:36
区别数据库中的记录并非id号之类的某一个字段,也就是说没有任何一个字段是唯一不重复的唯一值,必须用两个字段的组合才能成为区分每一条记录的唯一值,例如下表中 “箱号+客户编号”的组合才能成为唯一不重复的,意思是同一个箱子中有多个不同的客户,光看箱号很多记录是重复的,光看客户编号也是很多重复的记录,没有任何一个字段是像id号那样不重复的。

表A
箱号 客户编号 长度 宽度 高度
55 jacky 2 3 5
55 chen 2 4 6
78 chen 2 3 4

而下表中的数据就是根据上表中的数据计算出来的,如下

表B
箱号 客户编号 体积
55 jacky 30
55 chen 48

也就是说,表B中的第一条记录是从表A那里获取数据来生成的,同理第二条数据就是根据表A的第二条数据计算出来的。现在很明显了,表A中的第三条数据是没有被表B中的数据使用过的,怎样吧表A中的第三条数据查询出来? 现在两张表中都没有任何一个字段是唯一的值,必须是“箱号+客户编号”的组合才能区分每一条记录,这样的情况下查出表A中的第三条数据的sql语句应该怎样写啊? 不知道我说的是否清楚,很难表达啊。
...全文
875 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
niuzhouhai 2011-12-14
  • 打赏
  • 举报
回复
用你这条语句,搞定了,看来这个语句应该对了,还有几条数据不知道什么问题,我自己在查查,谢谢各位,学习了

[Quote=引用 4 楼 qianjin036a 的回复:]

SQL code
select * from 表A where not exists(select 1 from 表B where 箱号=表A.箱号 and 客户编号=表A.客户编号)
[/Quote]
快溜 2011-12-14
  • 打赏
  • 举报
回复
select * from 表A 
where not exists(select 1 from 表B
where 箱号=表A.箱号 and 客户编号=表A.客户编号 and 体积<>a.长度*a.宽度*a.高度)
niuzhouhai 2011-12-14
  • 打赏
  • 举报
回复
我试一下看看,我那个是7张表的查询条件,头晕啊....

[Quote=引用 1 楼 fredrickhu 的回复:]

SQL code
select * from b where not exists(select 1 from a where 箱号b.箱号 and 客户编号=a.客户编号)
[/Quote]
-晴天 2011-12-14
  • 打赏
  • 举报
回复
select * from 表A where not exists(select 1 from 表B where 箱号=表A.箱号 and 客户编号=表A.客户编号)
-晴天 2011-12-14
  • 打赏
  • 举报
回复
select * from 表A where not exists(select 1 from 表B where 箱号=a.箱号 and 客户编号=a.客户编号)
--小F-- 2011-12-14
  • 打赏
  • 举报
回复
select * from b where not exists(select 1 from a where 箱号=b.箱号 and 客户编号=a.客户编号)
--小F-- 2011-12-14
  • 打赏
  • 举报
回复
select * from b where not exists(select 1 from a where 箱号b.箱号 and 客户编号=a.客户编号)

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧