急,查询3张表,去掉某张表的字段不重复,怎么查询
假如有 A,B,C3张表A:书号 书名 出版社 价格
B:出版社 出版日期
C:书名 库存
现在我想查询这样条记录---书号不重复的记录
我是这样写的
select distinct 书号,书名,出版社,价格,出版日期,库存 from A,B,C where A.书名=C.书名 and A.出版社=B.出版社
测试下来根本没有去掉书名重复的这样的记录。、
本人新手,求高手给点解答. --------------------编程问答-------------------- 书名重复时取最小ID.
try->
select id=identity(int,1,1),书号,书名,出版社,价格,出版日期,库存 into # from A,B,C where A.书名=C.书名 and A.出版社=B.出版社--------------------编程问答-------------------- 汗。。。 --------------------编程问答-------------------- group by 书名
select * from # t where not exists(select 1 from # where 书名=t.书名 and id<t.id)
这个行不。。。 --------------------编程问答-------------------- 可以写下SQL语句么 --------------------编程问答-------------------- group by 什么啊 --------------------编程问答-------------------- 應該是你的A表本來就有 書號不同,書名相同的記錄。
而你又要顯示書號,自然會重復了 --------------------编程问答-------------------- select a.书号,a.书名,a.出版社,a.价格,c.库存,b.出版日期 from A as a,B as b,C as c where a.书号 in (select A.书号 from A,C where A.书名=B.书名 group by A.书号) and A.书号=C.书号 and A.出版社=B.出版社
试试吧,应该可以 --------------------编程问答-------------------- 我认为你的表建的就有问题,比如说书号1的出版社是a,书号2的出版社也是a,那么在B表中就有两条记录,那么那么这两个表连接的时候 就会产生四条记录。。。,所以是B表和c表,的唯一性不能确定,一种方法是将三个表和为一个表,或是在B和C表加一个书号的列,确保唯一 --------------------编程问答-------------------- select distinct a.书号 from A a
left join B b ON a.出版社=b.出版社
left join C c ON a.书名=b.书名 --------------------编程问答-------------------- 不好意思,改改
select distinct a.书号 from A a
left join B b ON a.出版社=b.出版社
left join C c ON a.书名=c.书名 --------------------编程问答-------------------- select A.书号,A.书名,A.出版社,A.价格,C.库存,B.出版日期 from A left join C on A.书号 = C.书号 left join B on A.出版社 = B.出版社 group by A.书号
补充:.NET技术 , C#