1

完全に異なるスキーマを使用して、あるテーブルから別のテーブルにデータをインポートしているところです。ある列から別の列にデータをインポートすることはできますが、新しい行が挿入されると設定される自動生成された列があります。コードはテーブルに対してcount()+ 100001を実行します。これをクエリで複製しようとしていますが、問題が発生しています。

これが私の質問です:

insert into prospect(pid,pfirst,plast,paddress,pcity,pstate,pzip,eid,pdate,pnum,pprim)
  select custid,cfirst,clast,street,city,state,zip,csrid,lastvisit,
     (select count(pid)+100000 from prospect),celphone from customer limit 140000,1000;

pnum列(生成されたもの)は100000、100001、100002などである必要がありますが、すべて100000になります。これは、挿入を1回だけ実行しているためだと思います。したがって、count()は全体で0です。 。

どうすれば私が望むことを達成できますか?

4

1 に答える 1

1

これを試して:

select count(pid) into @auto from prospect;
insert into prospect(pid,pfirst,plast,paddress,pcity,pstate,pzip,eid,pdate,pnum,pprim) 
select custid,cfirst,clast,street,city,state,zip,csrid,lastvisit,
     @auto:=@auto+1,celphone from customer limit 140000,1000;

最初のselectステートメントで、必要に応じて@auto変数の値を変更します。

于 2012-12-10T18:57:00.600 に答える