Jeg vil køre en update subjects.isActive (skal sættes til '0') på de rækker i subjects, som fremkommer af denne select:
SELECT subjects.id FROM subjects JOIN agentspostalcodes ON subjects.postalcode = agentspostalcodes.postalcode WHERE agentspostalcodes.agentid = 1;
Jeg har forsøgt følgende:
UPDATE subjects SET isactive = 0 WHERE ( SELECT subjects.id FROM subjects JOIN agentspostalcodes ON subjects.postalcode = agentspostalcodes.postalcode WHERE agentspostalcodes.agentid = 1 )
Men får denne fejl: Error Code : 1093 You can't specify target table 'subjects' for update in FROM clause
Jeg har efterfølgende forsøgt at lave et view og bruge dette således:
CREATE VIEW view_subjects AS SELECT subjects.id FROM subjects JOIN agentspostalcodes ON subjects.postalcode = agentspostalcodes.postalcode WHERE agentspostalcodes.agentid = 1;
UPDATE subjects SET isactive = 0 WHERE EXISTS view_subjects;
Men får følgende fejl: Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'view_subjects' at line 1
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
prøv UPDATE subjects SET subjects.isactive = 0 WHERE subjects.id IN( SELECT subjects.id FROM subjects JOIN agentspostalcodes ON subjects.postalcode = agentspostalcodes.postalcode WHERE agentspostalcodes.agentid = 1 )
>> neoman Jeg får fortsat denne fejl: Error Code : 1093 You can't specify target table 'subjects' for update in FROM clause
Det er som om, at man ikke kan bruge samme tabel i den nestede SELECT, som man har i UPDATE statementet... Men det er blot et gæt ud fra fejlmeddelelsen.
>> w13 Jeg er ikke sikker på, hvad du mener... Prøv at smide et helt eksempel
Hvad med UPDATE subjects SET subjects.isactive = 0 WHERE subjects.id IN( SELECT s1.id FROM subjects AS s1 JOIN agentspostalcodes ON s1.postalcode = agentspostalcodes.postalcode WHERE agentspostalcodes.agentid = 1 )
Et nyt skud: UPDATE subjects SET subjects.isactive = 0 WHERE subjects.postalcode IN (Select postalcode FROM agenpostalcodes WHERE agentspostalcodes.agentid = 1)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.