我现在有两个表A和B,想把A中的几列与B中的几列组成一个新表,
但是情况是这样的:
A 和 B中有一个共有列,但是这个共有列在A中 和B中 都有重复出现的情况,而且,两个表的行数也不相同!

解决方案 »

  1.   

    select a.col1,a.col2,b.col1
    from a inner join b using (id)
      

  2.   


    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://forum.csdn.net/BList/OtherDatabase
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试。   
      

  3.   

    [Quote=引用 2 楼 acmain_chm 的回复:]
    引用但是这个共有列在A中 和B中 都有重复出现的情况,而且,两个表的行数也不相同!建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
      参考一下这个贴子的提问方式http://forum.csdn.net/BList/OtherDatabase
     
      1. 你的 create table xxx .. 语句
      2. 你的 insert into xxx ... 语句
      3. 结果是什么样,(并给以简单的算法描述)
      4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
     
      这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试。 
    表ACREATE TABLE hisdyninfo
    (
      messageid integer,
      mmsi integer NOT NULL,
      status character varying(60),
      turnrate double precision,
      speed double precision,
      lon double precision,
      lat double precision,
      course double precision,
      heading double precision,
      updatetime timestamp without time zone DEFAULT now(),
      "position" geometry,
      zoom integer DEFAULT 0,
      CONSTRAINT enforce_geotype_position CHECK (geometrytype("position") = 'POINT'::text OR "position" IS NULL),
      CONSTRAINT enforce_srid_position CHECK (srid("position") = 101)

    表BCREATE TABLE hisallstainfo
    (
      messageid integer,
      mmsi integer NOT NULL,
      imonumber integer,
      callsign character(7),
      name character varying(30),
      "type" character varying(30),
      width integer,
      length integer,
      eta character varying(20),
      draught double precision,
      destination character varying(20),
      updatetime timestamp without time zone DEFAULT '2030-01-01 00:00:00'::timestamp without time zone,
      starttime timestamp without time zone,
      offseta integer DEFAULT 0,
      offsetb integer DEFAULT 0,
      offsetc integer DEFAULT 0,
      offsetd integer DEFAULT 0

    要用到A中的基本上所有的,及B中大部分的。
    建个新表如下,CREATE TABLE zong
    (
      mmsi integer NOT NULL,
      status character varying(60),
      turnrate double precision,
      speed double precision,
      lon double precision,
      lat double precision,
      course double precision,
      heading double precision,
      updatetime timestamp without time zone,
      "position" geometry,
      "type" character varying(30),
      width integer,
      length integer,
      eta character varying(20),
      draught double precision,
      destination character varying(20),
      starttime timestamp without time zone,
      offseta integer DEFAULT 0,
      offsetb integer DEFAULT 0,
      offsetc integer DEFAULT 0,
      offsetd integer DEFAULT 0
      

  4.   

    记录及达到的目的
    要几条INSERT语句,插入记录,以及你要的正确结果是什么
      

  5.   

    上面的那三个表,是我有的表,我主要就是想用
    insert into zong select ...from hisallstainfo及hisdyninfo。
    上两表中的mmsi码实际上是唯一的,但是由于后面的updatetime列不同,所以,mmsi码出现了重复,我现在的表中就是想实现以mmsi码与updatetime两列来区分行的一个总表。怎么做啊?
    不知道表达清楚了吗?
    我是个菜鸟,刚开始用sql,不太懂!谢谢帮忙啊!
      

  6.   


    我已经列出来了,
    在4楼!最下面的zong表就是目标表!
    还需要知道什么,跟我说说,我不太懂!
      

  7.   

    hisdyninfo、hisallstainfo表中的记录,通过什么字段连接,你要在zong表中插入什么记录
      

  8.   

    mmsi 和 updatetime吧!不过两者都有重复,但是一个mmsi码对应的只有一个updatetime!所以应该还是可以实现的吧,怎么实现呢?
      

  9.   

    我是菜鸟,不好意思,看的不太懂啊,我只希望能给个sql语句解决掉,没想到这么麻烦啊!
    我主要是想通过hisdyninfo、hisallstainfo表的连接,具体我也不知道什么连接,然后得到zong表。其中zong表中的每一组mmsi及updatetime是唯一的!(也就是说他俩一起才确定一行!)
      

  10.   

    前面那个说的有点不清楚,应该是说,通过mmsi和updatetime连接!一组对应的mmsi和updatetime才能确定唯一的一行!
      

  11.   

    关键是别人猜不出你到底想实现什么功能。有时候仅靠语言,很多人都无法准确表达或者理解。 参考一下这个贴子的提问方式http://forum.csdn.net/BList/OtherDatabase
      

  12.   

    在,需要两个表中的大量数据,但不是全部(四楼中的zong表就是我想建立的目标表),其中表中的每一行由mmsi和updatetime联合唯一确定!
      

  13.   

    算了,如果你用MYSQL,用MYSQLDUMP导出记录,上传到
    www.access911.net/csdn
    在这里贴要求结果
      

  14.   

    我说怎么回事,原来放错链接了。
    建议楼主看一下这个贴子的提问方法。
    http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html?seed=206485877&r=61545678#r_61545678