Hi Rob,

I can see your point, but couldn't tell you if this should be considered a
bug or not.
Probably only DRH can tell you that.

RBS

On Thu, Oct 27, 2016 at 8:21 AM, Rob Golsteijn <rob.golste...@mapscape.eu>
wrote:

> Hi RBS,
>
> Re-introducing mytable in the sub-select is a workaround (and to get the
> same semantics in the general case I have to use the same row from the
> inner mytable and outer mytable). As indicated in my original message I
> already have a workaround for the issue.
>
> The intention of my post was to report that sqlite incorrectly reports
> that mytable does not exists. Table mytable exists --- it is the target
> table of the UPDATE statement and still in scope. I see no reason why it is
> not allowed to use it in that EXISTS expression.
>
> So my question: is there a valid reason why sqlite does not know
> mytable.myfield2 in my simplified query? Or is this a bug?
>
>
>
> Regards,
>
> Rob Golsteijn
>
>
>
> UPDATE mytable
>     SET myfield1 = (SELECT 1 from mytable
>                   ORDER BY EXISTS (SELECT 1
>                                     WHERE mytable.myfield2 = 1
>                                   )
>                    )
>
>
> RBS
>
> On Tue, Oct 25, 2016 at 4:40 PM, Rob Golsteijn <rob.golste...@mapscape.eu>
> wrote:
>
> > Hi List,
> >
> > I encountered a situation in which sqlite does not understand to which
> > field I try to refer. I simplified the original query to show the
> problem.
> > The simplified query itself is now completely meaningless (and for my
> > specific situation I could rewrite the query to work around the problem).
> >
> > In the example below I expected that mytable.myfield2 in the EXISTS
> > expression would refer to myfield2 of table mytable from the top level
> > UPDATE statement. It looks like the combination of an ORDER BY and an
> > EXISTS that refers to the table of an UPDATE statement causes sqlite to
> > report that myfield2 is unknown. Sqlite does not complain when I use
> > mytable.myfield2 in other places in the query.
> >
> > CREATE TABLE mytable
> > (
> >    myfield1 INTEGER,
> >    myfield2 INTEGER
> > );
> >
> > UPDATE mytable
> >    SET myfield1 = (SELECT 1
> >                  ORDER BY EXISTS (SELECT 1
> >                                    WHERE mytable.myfield2 =1
> >                                  )
> >                   );
> >
> > Error: no such column: mytable.myfield2
> >
> > Tested with sqlite versions 3.8.4.3,  3.8.8.2,   3.11.1 and 3.15.0
> > (latest).
> >
> > Met Vriendelijke Groet, Kind Regards,
> >
> > Rob Golsteijn
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to