请教一个问题,我在一次移动数据库导入导出的过程中,丢失一些存储过程,导致所有的SELECT出来的结果都变成了两条比如我的数据库中的两个表A表结构如下aid - 主键,自动
atitle
mid - 另外一个表(m表)的主键B表结构如下bid - 主键,自动
btitle
mid - 另外一个表(m表)的主键
aid - A表的主键我通过
select * from a,b where a.aid=b.bid order by bid desc
读出相关的数据,但发现所有的数据都重复出现,每条数据都变成了两条一模一样的数据,我是在MS SQL SERVER 2005的软件中测试也是出现两条。请问我该怎么写这个存储过程,让数据显示变成一条,或者用SQL语句该怎么写呢,因为SQL实在太多了,请问有什么好的办法呢?

解决方案 »

  1.   

    --每条数据都变成了两条一模一样的数据
    select distinct * from a,b where a.aid=b.bid order by bid desc 
      

  2.   

    select distinct * from tb
    ?
      

  3.   

    select distinct * from a,b where a.aid = b.bid order by bid desc 
      

  4.   

    因为你已有导入导出动作,可能是A表或B表没有主键了,以至数据表里存在重复的记录;
    具体你查看表里数据
    select aid,count(*)
    from tb1
    group by aid
    having count(*)>1select bid,count(*)
    from tb2
    group by bid
    having count(*)>1
      

  5.   

    如果是写查询语句来查询,这个当然可以,就如一楼所写:
       --每条数据都变成了两条一模一样的数据
        select distinct * from a,b where a.aid=b.bid order by bid desc 
     
      

  6.   

    distinct 的方式是肯定不对的~我都设置了主键,主键没有问题的~还有其他方式吗?
      

  7.   

    还有个现象是,我select单一一个表,都是没问题的,都是一条信息,但我如果select两个有关系的表,有的是出现两条相同数据的情况,有的是正常的,主要问题是出现在B表,只要我把B表加入进去后,都会出现两条数据的情况~
      

  8.   

    --TRY
    select distinct * from a,(select distinct * from b)b where a.aid=b.bid order by bid desc 
      

  9.   

    select distinct * from a,(select distinct * from b)b where a.aid=b.bid order by bid desc 什么意思?为什么要这样?
    我就是但一select B表也是出现同样的一条数据,没有出错的~