Verschachtelte Abfragen
maqui
- datenbank
Wie sind solche Unterabfragen mit MySQL möglich? (phpmyadmin hängt sich bei den Klammern auf)
UPDATE nutzer
SET jhrggID=(SELECT jhrggID
FROM studenten)
WHERE ID = (SELECT ID
FROM studenten)
Hallo maqui,
Wie sind solche Unterabfragen mit MySQL möglich?
UPDATE nutzer
SET jhrggID=(SELECT jhrggID
FROM studenten)
WHERE ID = (SELECT ID
FROM studenten)
Nein. Auch nicht in SQL.
In SQL sowie MySQL ab 4.1 ist folgendes möglich, das nennt sich Subselect.
SELECT * FROM a WHERE a.b IN (SELECT b FROM c)
Bringt Dir allerdings nicht viel, da Du es nicht innerhalb einer Update-Zuweisung durchführen darfst.
Außerdem unterstützt MySQL 3 folgendes:
INSERT INTO a (b, c) SELECT b, c FROM hallo
Mich würde also nicht wundern, wenn
REPLACE INTO nutzer (ID, jhrggID) SELECT ID, jhrggID FROM studenten
funktionieren würde. (bin zu faul nachzuschlagen)
Näheres im MySQL-Handbuch.
Viele Grüße,
Christian
Danke!!! Werd's mal probieren!
Hallo Christian
SELECT * FROM a WHERE a.b IN (SELECT b FROM c)
Hilfe! Das ist alles was mir 4.1 bringt? Ich dachte auch ein
SELECT
FROM
WHERE a = (SELECT FROM WHERE)
würde gehen...
Junge junge, wie schwer ist es eigentlich das zu programmieren, die IBM-DB2 unterstützt das schon seit Jahren, wie soll ich bloß jemals meine JOINS uns Abfragen optimieren wenn ich in MySQL arbeite.
Bei Access habe ich's ja hingenommen, aber ich dachte hier wird das bald auch mal was...
Rouven
Hallo Rouven,
Hilfe! Das ist alles was mir 4.1 bringt? Ich dachte auch ein
SELECT
FROM
WHERE a = (SELECT FROM WHERE)
würde gehen...
Kann sein, dass es mit = auch geht, aber laut SQL-Standard ist - meiner Kenntnis nach - nur IN erlaubt. Ansonsten - wo ist, außer, dass Du statt IN das Gleichheitszeichen verwendet hast, der Unterschied zwischen meinem Statement und Deinem?
Viele Grüße,
Christian
Hi Christian
Kann sein, dass es mit = auch geht, aber laut SQL-Standard ist - meiner Kenntnis nach - nur IN erlaubt. Ansonsten - wo ist, außer, dass Du statt IN das Gleichheitszeichen verwendet hast, der Unterschied zwischen meinem Statement und Deinem?
Ein grosser, IN wäre auch noch richtig, wenn mehrere Records gefunden werden in der Unterabfrage, bei = hingegen ist das ein Fehler. Das in SQL nur IN mit Subselects erlaubt ist, wäre mir neu, es müsste so ziemlich überall gehen. EXISTS gibt es ja auch noch...
Gruss Daniela