Thomas G. Lockhart wrote:
>
> > And there is no way of doing (at least presently):
> >
> > select * from table where (val1,val2,val3)
> > in (select 1,1,1 union select 1,1,2);
>
> I'll look at that...
Could it be a good idea to have the syntax (at least for constants),
changed to (or at least allowed ;) to the following:
select * from table
where (val1,val2,val3)
in ( (1,1,3), (1,1,2), (1,1,1) );
Which brings us to another issue:
Should (val1,val2,val3) be just some construct that gets rewritten to
"something else" in parser, or should it create an instance of
anonymus row type ?
Allowing anonymus row type creation on the fly would allow us many nice
things, for example a way to create new types of aggregate functions,
like
FOR_MAX((price,date)), so that we could do the following in only one
pass
SELECT
FOR_MAX((price,sales_datetime)) as last_price,
MAX(sales_datetime) as last_sale,
WEEK(sales_datetime) week_nr
GROUP BY
week_nr
;
This would get the prices and dates of each weeks last sale, and is
much hairier to do using just standard sql.
Hannu