You don't want to do that. Your memory temptable should have a primary key
and it generally uses a hash index so you definitely don't want to use
order by unless you explicitly create it to use btree index... And for such
a small number of values, what is wrong with using a small number of
comparisons?

On Wed, 28 Jun 2023, 9:36 am manpritsinghece--- via discuss, <
[email protected]> wrote:

> Consider a problem where i have to find the second largest value in each
> row : I have tried to write code for that
> CREATE TABLE xyz(a INT, b INT, c INT);
> INSERT INTO xyz VALUES (3, 7, 5),
>                        (5, 6, 2),
>                        (9, 3, 6),
>                        (5, 1, 3),
>                        (2, 4, 7);
>
> CREATE TEMPORARY TABLE tb(g INT);
> DELIMITER //
> CREATE FUNCTION second_largest(x INT, y INT, z INT) RETURNS INT
>   BEGIN
>     DECLARE ans INT;
>     INSERT INTO tb VALUES (x), (y), (z);
>     SET ans = (SELECT g FROM tb ORDER BY g DESC LIMIT 1, 1 );
>     DELETE FROM tb;
>     RETURN ans;
>   END //
> DELIMITER ;
>
> SELECT second_largest(a, b, c) FROM xyz;
> SELECT second_largest(4, 1, 8);
>
> The function is working ok ...
>
> I just need to know if the way i have used the temporary table inside the
> function is ok or not
> _______________________________________________
> discuss mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
>
_______________________________________________
discuss mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to