#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.

Reply via email to