a表字段是
ID  NAME
B表字段也是
ID NAME我想把A表的数据和B表的数据放进一个C表中
C表动态建立,C表的字段也是ID 和NAME
请问用SQL怎么做
分几步

解决方案 »

  1.   

    如果假设字段id 是 int型长度为8,name是字符串型长度为15,
    在delphi里使用TQuery组件并并以bde为引擎我会这么写,但我
    感觉这样效率不高,不知道有没有更好的方法?with Query1 do begin
        SQL.Clear;
        SQL.Add('create table c(id int(8),name char(15))');
        try
            ExecSQL;
            Active:=false;
            SQL.Clear;
            SQL.Add('select * from a');
            try
                Active:=true;
                if RecordCount>0 then begin
                    First;
                    while not Eof do begin
                        Query2.SQL.Clear;
                        Query2.SQL.Add('insert into c(id,name) values(:pid,:pname)');
                        Query2.ParamByName['pid'].AsInteger:=FieldValues['id'];
                        Query2.ParamByName['pname'].AsString:=FieldValues['name'];
                        try
                            Query2.ExecSQL;
                        finally
                            Query2.Active:=false;
                        end;
                        Next;
                    end;
                end;
            finally
                Active:=false;
            end;
            SQL.Clear;
            SQL.Add('select * from b');
            try
                Active:=true;
                if RecordCount>0 then
                    First;
                    while not Eof do begin
                        Query2.SQL.Clear;
                        Query2.SQL.Add('insert into c(id,name) values(:pid,:pname)');
                        Query2.ParamByName['pid'].AsInteger:=FieldValues['id'];
                        Query2.ParamByName['pname'].AsString:=FieldValues['name'];
                        try
                            Query2.ExecSQL;
                        finally
                            Query2.Active:=false;
                        end;
                        Next;
                    end;
                end;
            finally
                Active:=false;
            end;
        finally
            Active:=false;
        end;
    end;
      

  2.   

    用联合
    select * from A
    union
    select * from b
      

  3.   

    select * from A
    union all
    select * from b