MySql Restriction

Eine neue Spalte einer Tabelle in MySql anzulegen ist ja nicht schwer. Nur sollte diese Spalte, drei andere Spalten logisch verknüpfen. Also schnell ein Upate Statment geschrieben was mit einem Subquery die 3 Spalten verknüpft und dann in die neue Spalte einfügt. Nur leider liegen die Quellspalten und die Zielspalte in der gleichen Tabelle. So sah die Subquery aus:

Update Tabelle as t1 set t1.spalte = ( Select (t2.Spalte1 = ‘1′ And t2.Spalte2 = ‘0′ And t2.Spalte3=’1′) from Tabelle as t2 where t1.id=t2.id)

Und leider geht das nicht:

Another restriction is that currently you cannot modify a table and select from the same table in a subquery.

Also musste ich mir das Ergebniss der Subquery Exportieren und dann per Replace ein Update SQL Script bauen, was dann genau das gleiche gemacht hat wie das Update Statment mit Subquery, nur umständlicher argh.

Comments (1)

Robin Parker | The OlympApril 18th, 2009 at 2:42 pm

denke SO geht’s auch?

UPDATE test as t1 SET t1.spalte4 = CONCAT(t1.spalte1, t1.spalte2, t1.spalte3);
sonst halt mit temp-table wenns schwierig wird oder nen nested-set-joining z.b. stattfinden soll…

lg :D

Leave a comment

Your comment