What annoys me about MySQL is that it gets simple basic SQL wrong. For example<p><pre><code> update foo set a = b, b = a
</code></pre>
is supposed to swap the values in columns a and b, according to the SQL standard. Logically, all of the right hand sides are evaluated using the pre-update values from the columns, and then the results are assigned.<p>In MySQL, it logically does the assignments left to right, not evaluating an assignment's right hand sides until it gets to that assignment, and that evaluation uses the updated values from the already evaluated assignments.<p>In Python terms, it is supposed to be like this:<p><pre><code> a, b = b, a
</code></pre>
but it is instead like this:<p><pre><code> a = b
b = a
</code></pre>
If we had the time, I'd love to switch to something else just to get rid of annoyances like that.