# Update mit subselect

**URL:** <https://www.pg-forum.de/t/update-mit-subselect/5820>\
**Category:** Andere Datenbanken\
**Created:** [20. April 2011 um 09:38 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820 "2011-04-20T09:38:59Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![bamdenied](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/b/a9a28c/32.png) [@bamdenied](https://www.pg-forum.de/u/bamdenied)\
**Post date:** [20. April 2011 um 09:38 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/1 "2011-04-20T09:38:59Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![castorp](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/c/e99b99/32.png) [@castorp](https://www.pg-forum.de/u/castorp)\
**Post date:** [20. April 2011 um 10:01 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/2 "2011-04-20T10:01:36Z")

</div>

“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:

```nohighlight
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.

---

<div class="post-metadata">

**Author:** ![bamdenied](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/b/a9a28c/32.png) [@bamdenied](https://www.pg-forum.de/u/bamdenied)\
**Post date:** [20. April 2011 um 11:07 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/3 "2011-04-20T11:07:59Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![castorp](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/c/e99b99/32.png) [@castorp](https://www.pg-forum.de/u/castorp)\
**Post date:** [20. April 2011 um 11:37 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/4 "2011-04-20T11:37:49Z")

</div>

> [@bamdenied](#):
>
> aber ich bekommen seltsamer Weise bei beiden Queryversionen einen Syntax error.

Und der Fehler ist?

---

<div class="post-metadata">

**Author:** ![bamdenied](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/b/a9a28c/32.png) [@bamdenied](https://www.pg-forum.de/u/bamdenied)\
**Post date:** [21. April 2011 um 08:16 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/5 "2011-04-21T08:16:40Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![castorp](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/c/e99b99/32.png) [@castorp](https://www.pg-forum.de/u/castorp)\
**Post date:** [21. April 2011 um 08:46 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/6 "2011-04-21T08:46:00Z")

</div>

Das ist **keine** PostgreSQL Fehlermeldung.

Klingt mehr nach MySQL…

---

<div class="post-metadata">

**Author:** ![ads](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/8e7dd6/32.png) [@ads](https://www.pg-forum.de/u/ads)\
**Post date:** [21. April 2011 um 09:12 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/7 "2011-04-21T09:12:21Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![castorp](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/c/e99b99/32.png) [@castorp](https://www.pg-forum.de/u/castorp)\
**Post date:** [21. April 2011 um 09:23 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/8 "2011-04-21T09:23:28Z")

</div>

> [@ads](#):
>
> Das vermutete ich schon in dem anderen Thread, als er nach REPLACE gefragt hat.

Naja, PostgreSQL hat ja auch eine replace() Funktion.

---

<div class="post-metadata">

**Author:** ![system](https://www.pg-forum.de/uploads/default/original/1X/dc97a981dd26692d5fb52e8b8fc7c090d7b9559a.png) [@system](https://www.pg-forum.de/u/system)\
**Post date:** [21. Februar 2021 um 07:12 UTC](https://www.pg-forum.de/t/update-mit-subselect/5820/9 "2021-02-21T07:12:32Z")

</div>


