Update mit subselect

Hier kommen Posts zu anderen Datenbanken als PostgreSQL rein.
Antworten
bamdenied
Neuer Benutzer
Beiträge: 7
Registriert: Di 19. Apr 2011, 14:45

Update mit subselect

Beitrag von bamdenied » Mi 20. Apr 2011, 11:38

Hallo,

Ich weiß nicht wieso die folgende Query nicht funktioniert:

UPDATE history SET hours=60,conntent='bsp'
WHERE wpnr=(select wpnr from tabelle where title='keine ahnung' AND project='7.5');

Ich hoffe ihr könnt mir helfen.

Vielen Dank
Mark

castorp
Erfahrener Benutzer
Beiträge: 1086
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Beitrag von castorp » Mi 20. Apr 2011, 12:01

"nicht funktioniert" ist keine mir gekannte Fehlermeldung von PostgreSQL, aber ich vermute mal Du bekommst einen Fehler "single value sub-select returns more than one row" oder sowas ähnliches.

Das liegt daran, das Dein SELECT eine Menge zurückliefert und eine Menge nicht mit = vergleichen werden kann. Mann muss stattdessen den IN Operator verwenden:

Code: Alles auswählen

WHERE wpnr [b][SIZE="4"]IN[/size][/b] (select wpnr from tabelle where title='keine ahnung' AND project='7.5')


Das kann aber überraschende Effekte haben, wenn die Spalte wpnr NULL Werte enthalten kann.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

bamdenied
Neuer Benutzer
Beiträge: 7
Registriert: Di 19. Apr 2011, 14:45

Beitrag von bamdenied » Mi 20. Apr 2011, 13:07

OK vielen Dank erst einmal für die Information, aber ich bekommen seltsamer Weise bei beiden Queryversionen einen Syntax error.

Ist evtl. etwas nicht Normgerecht an der Query?

castorp
Erfahrener Benutzer
Beiträge: 1086
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Beitrag von castorp » Mi 20. Apr 2011, 13:37

bamdenied hat geschrieben:aber ich bekommen seltsamer Weise bei beiden Queryversionen einen Syntax error.
Und der Fehler ist?
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

bamdenied
Neuer Benutzer
Beiträge: 7
Registriert: Di 19. Apr 2011, 14:45

Beitrag von bamdenied » Do 21. Apr 2011, 10:16

ERROR 1064 (42000): You have an error in your SQL syntax;

castorp
Erfahrener Benutzer
Beiträge: 1086
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Beitrag von castorp » Do 21. Apr 2011, 10:46

Das ist keine PostgreSQL Fehlermeldung.

Klingt mehr nach MySQL...
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

ads
Erfahrener Benutzer
Beiträge: 4148
Registriert: Mi 8. Feb 2006, 10:58
Wohnort: MD
Kontaktdaten:

Beitrag von ads » Do 21. Apr 2011, 11:12

Das vermutete ich schon in dem anderen Thread, als er nach REPLACE gefragt hat.

bamdenied: dieses Forum hier dreht sich ausschließlich um PostgreSQL, nicht um MySQL.
Das sind zwei verschiedene Produkte.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support

castorp
Erfahrener Benutzer
Beiträge: 1086
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Beitrag von castorp » Do 21. Apr 2011, 11:23

ads hat geschrieben:Das vermutete ich schon in dem anderen Thread, als er nach REPLACE gefragt hat.
Naja, PostgreSQL hat ja auch eine replace() Funktion.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Antworten