#28787: QuerySet.update() fails on MySQL if a subquery references the base table -------------------------------------+------------------------------------- Reporter: Paulo | Owner: nobody Type: Bug | Status: closed Component: Database layer | Version: 1.11 (models, ORM) | Severity: Normal | Resolution: invalid Keywords: | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+-------------------------------------
Comment (by Oskar Persson): Replying to [comment:4 Sonu kumar]: > This doesn't look to be a bug in Django. This is a more of MySQL query parser bug. This is not a query parser bug but a documented limitation of [https://dev.mysql.com/doc/refman/5.7/en/subquery-errors.html MySQL]: > You can use a subquery for assignment within an UPDATE statement because subqueries are legal in UPDATE and DELETE statements as well as in SELECT statements. However, you cannot use the same table (in this case, table t1) for both the subquery FROM clause and the update target. and [https://mariadb.com/kb/en/library/subquery-limitations/#modifying- and-selecting-from-the-same-table MariaDB]: > It's not possible to both modify and select from the same table in a subquery. For example: > {{{ > DELETE FROM staff WHERE name = (SELECT name FROM staff WHERE age=61); > ERROR 1093 (HY000): Table 'staff' is specified twice, both > as a target for 'DELETE' and as a separate source for data > }}} -- Ticket URL: <https://code.djangoproject.com/ticket/28787#comment:5> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/066.6209e171660332cdc94cc29f5ef60b7a%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.