MySQL: Sæt en kolonne lig med en anden

Tags:    databaser

Hej udviklere
"UPDATE pages SET approvedContent = ( SELECT pages.tempContent FROM pages WHERE pages.id = 1) WHERE id = 1"

Virker den her sql query med mysql?

Og hvad er min fejl?

har selv prøvet den af men får fejlen: You can't specify target table 'pages' for update in FROM clause



8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Uhh... du fik læst sidste linie?

Ellers så får du den da lige i pap... :)
Currently, you cannot update a table and select from the same table in a subquery.


Og ekstra argument:
Har selv lige afprøvet idéen. Resultet er at det kan ikke lade sig gøre.



Indlæg senest redigeret d. 05.02.2008 21:01 af Bruger #10216
Er det du forsøger ikke bare noget så simpelt som det her:

update pages set approvedContent = tempContent



Du kan ikke kombinere UPDATE queries med sub SELECT queries

http://dev.mysql.com/doc/refman/5.0/en/update.html

Se sidste linje.

Men hvorfor ikke bare udføre:
UPDATE pages SET approvedContent = tempContent WHERE pages.id = 1



Indlæg senest redigeret d. 05.02.2008 10:47 af Bruger #10216
Selvfølgelig kan man update en kolonne på baggrund af en subselect, det er standard SQL. Problemet opstår når din subselect returnerer mere end een værdi, der er så sikkert noget der blokerer i sql motoren, således det kun vil virke med enkelte aggregeringer (fx max, count, sum)... men det kan godt lade sig gøre...



Tror det du forsøger er at lave en join, og så opdatere din kolonne ud fra det



Aaah yes, jeg talte om generel database, ikke nødvendigvis MySQL. I standard SQL (SQL92) er det muligt (har lige testet på MSSQL, der virker det uden problemer). Så problemet er at MySQL ikke har implementeret hele standarden...



Er det ikke tid til at lukke tråden



jov, det var en ide :D



t