448 Stimmen

Sie können die Zieltabelle für die Aktualisierung nicht in der FROM-Klausel angeben

Ich habe eine einfache mysql-Tabelle:

CREATE TABLE IF NOT EXISTS `pers` (
  `persID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(35) NOT NULL,
  `gehalt` int(11) NOT NULL,
  `chefID` int(11) DEFAULT NULL,
  PRIMARY KEY (`persID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `pers` (`persID`, `name`, `gehalt`, `chefID`) VALUES
(1, 'blb', 1000, 3),
(2, 'as', 1000, 3),
(3, 'chef', 1040, NULL);

Ich habe versucht, das folgende Update auszuführen, aber ich erhalte nur die Fehlermeldung 1093:

UPDATE pers P 
SET P.gehalt = P.gehalt * 1.05 
WHERE (P.chefID IS NOT NULL 
OR gehalt < 
(SELECT (
    SELECT MAX(gehalt * 1.05) 
    FROM pers MA 
    WHERE MA.chefID = MA.chefID) 
    AS _pers
))

Ich suchte nach dem Fehler und fand von mysql folgende Seite http://dev.mysql.com/doc/refman/5.1/en/subquery-restrictions.html aber das hilft mir nicht weiter.

Was soll ich tun, um die SQL-Abfrage zu korrigieren?

-1voto

Arrow Punkte 165

Andere Umgehungen umfassen die Verwendung von SELECT DISTINCT oder LIMIT in der Unterabfrage, obwohl diese nicht so explizit in ihrer Wirkung auf die Materialisierung sind. das funktionierte für mich

wie im MySql Doc erwähnt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X