J'ai une table comme ceci:-Select: la lecture des données d'autres tables lorsque 2 Attributs r pas la même (performance)
Create Table PersonAgent (
PersonID varchar2(10) not null,
AgentID varchar2(10) not null,
Address varchar2(50),
City varchar2(50),
Country varchar2(50)
)
Eh bien, je besoin de générer ce nouveau tableau, Coze certaines données sont incorrects.
Si PersonID et AgentID sont identiques alors je peux prendre les autres attributs comme ils sont mais s'ils ne sont pas les mêmes, alors j'ai besoin de lire d'une autre table.
Petit exemple:
INSERT INTO PersonAgent_copy(PersonID, AgentID, Address, City, Country)
Select Pa.Persid, Pa.Agentid,
(Case
When Pa.Personid = Pa.Agentid
Then pa.Address
ELSE (SELECT p.Address
FROM Person p
Where Pa.Agentid = P.Personid)),
(Case
When Pa.Personid = Pa.Agentid
Then pa.City
ELSE (SELECT p.City
FROM Person p
Where Pa.Agentid = P.Personid)),
(Case
When Pa.Personid = Pa.Agentid
Then pa.Country
ELSE (SELECT p.Country
From Person P
Where Pa.Agentid = P.Personid))
FROM PersonAgent pa
(Il y a quelques autres attributs qui fonctionne de la même)
Quel est le meilleur moyen de le faire?
Ahh damit pourquoi n'ai-je pas eu cette idée ...: d Thx mate! – domiSchenk
Lorsque vous voulez copier beaucoup de données, n'utilisez pas une instruction INSERT. Mieux vaut "CREATE TABLE PersonAgent_copy AS SELECT ...". C'est beaucoup plus rapide! – Tim
Regarde intresting Tim, copie-t-il FK et PKs? – domiSchenk