Index: django/db/models/base.py
===================================================================
--- django/db/models/base.py	(revision 404)
+++ django/db/models/base.py	(working copy)
@@ -176,10 +176,18 @@
             placeholders = ['%s'] * len(field_names)
             if self._meta.order_with_respect_to:
                 field_names.append(backend.quote_name('_order'))
-                # TODO: This assumes the database supports subqueries.
-                placeholders.append('(SELECT COUNT(*) FROM %s WHERE %s = %%s)' % \
-                    (backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.order_with_respect_to.column)))
-                db_values.append(getattr(self, self._meta.order_with_respect_to.attname))
+                if settings.DATABASE_ENGINE == 'mysql':
+                    placeholders.append('%s')
+                    subsel = 'SELECT COUNT(*) FROM %s WHERE %s = %%s' % (
+                        backend.quote_name(self._meta.db_table),
+                        backend.quote_name(self._meta.order_with_respect_to.column))
+                    cursor.execute(subsel, (getattr(self, self._meta.order_with_respect_to.attname),))
+                    db_values.append(cursor.fetchone()[0])
+                else:
+                    # TODO: This assumes the database supports subqueries.
+                    placeholders.append('(SELECT COUNT(*) FROM %s WHERE %s = %%s)' % \
+                        (backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.order_with_respect_to.column)))
+                    db_values.append(getattr(self, self._meta.order_with_respect_to.attname))
             cursor.execute("INSERT INTO %s (%s) VALUES (%s)" % \
                 (backend.quote_name(self._meta.db_table), ','.join(field_names),
                 ','.join(placeholders)), db_values)
