PHP SQL Abfrage

liquidbeats

Erfahrenes Mitglied
Nabend,


wollte mal fragen ob MySQL eine funktion bietet, womit man etwas von a nach b Verschieben kann.
Angenommen es befindet sich ein Datensatz in der Datenbank wie folgt

id | title
1 | Test
2 | NULL


Ist es möglich von 1 den title direkt zu 2 zu Kopieren, Ohne title in eine Variable Laden zu müssen?


Danke, Gruß
 
Falls deine Datenbank Subselects kann, wäre folgendes eine Lösung:
Code:
-- Ungetestetes Beispiel --

UPDATE tabelle
SET title = (SELECT title FROM tabelle WHERE id=1)
WHERE id = 2;
 
Hi,

Nein, so eine Funktion gibt es nicht.... Und Subselects werden erst ab version 4.1 unterstützt...

Solltest Du eine Version <4.1 haben (die Version des DBMS anführen wäre immer eine nette Sache) kannst Du das ganze nur in zwei Queries zerlegen.
1. Query: INSERT INTO SELECT... (http://dev.mysql.com/doc/mysql/en/insert-select.html)
2. Query: DELETE (löscht den "alten" datensatz

Ciao,
mike
 
Sway hat gesagt.:
Falls deine Datenbank Subselects kann, wäre folgendes eine Lösung:
Code:
-- Ungetestetes Beispiel --

UPDATE tabelle
SET title = (SELECT title FROM tabelle WHERE id=1)
WHERE id = 2;
Du kannst meines Wissens mit Subselects aus anderen Tabellen updaten, aber so ein Query führt zu folgender Fehlermeldung:
"#1093 - You can't specify target table 'tabelle' for update in FROM clause"

Da käme die Datenbank vermutlich etwas durcheinander, wenn sie aus der Tabelle liest, in die sie gleichzeitig schreibt.

Gruß hpvw
 
Ich Danke euch :)

Ihr bringt mich ganz durcheinander, es sollte schon abwertkompatibel sein, also auch MxSQL Version 3, alles dadrunter hingegen nicht, so mysql 2 und 1 sind ja nicht mehr wirklich in gebrauch.

gruß
 
Zurück