On Tue, 18 Feb 2003, Tom Lane wrote:
> Bruno Wolff III <bruno@wolff.to> writes:
> > Christoph Haller <ch@rodos.fzk.de> wrote:
> >> AFAIK, statements like
> >> DELETE FROM t1 where t1.id = t2.id ;
> >> are legal. Could the parser still work on this, if the feature is
> >> removed?
>
> > Only if a new syntax is added.
>
> For UPDATE, we actually do have an extension syntax that allows naming
> secondary tables explicitly:
>
> UPDATE target SET ... FROM other-tables WHERE ...
>
> The trouble with extending this to DELETE is that DELETE already uses
> the keyword FROM. Seems like we are stuck with a choice between
>
> DELETE FROM target FROM other-tables WHERE ...
>
> DELETE FROM target, other-tables WHERE ...
>
> both of which are bizarre and confusing to my eyes. I think that MySQL
> uses the second form, which I like even less than the first (it obscures
> the very fundamental semantic difference between the deletion target and
> the other tables).
>
> Or we could go off with a different keyword, perhaps
>
> DELETE FROM target WITH other-tables WHERE ...
>
> but that doesn't seem to pass the low-astonishment test either.
It'd seem reasonable to use something like SQL99's WITH, although
that'd put the WITH before the FROM I think. That'd at least be similar
to using it in select (admittedly we don't have it yet, but wasn't someone
talking about it?)