MySQL可以通过比较函数进行排序吗?

MySQL可以通过比较函数进行排序吗?,mysql,Mysql,我有一个MySql函数,它在给定主键的情况下定义表行的排序 CREATE FUNCTION CmpRows (a INT, b INT) BEGIN IF ((SELECT foo FROM Bar WHERE id=a) etc...) THEN RETURN -1; ELSEIF (other stuff) THEN RETURN 1; ELSE RETURN 0; END IF; END 我

我有一个MySql函数,它在给定主键的情况下定义表行的排序

CREATE FUNCTION CmpRows (a INT, b INT)
BEGIN
    IF ((SELECT foo FROM Bar WHERE id=a) etc...)
    THEN
        RETURN -1;
    ELSEIF (other stuff)
    THEN
        RETURN 1;
    ELSE
        RETURN 0;
    END IF;
 END

我可以让MySQL使用此函数按结果集排序吗?

声明此函数为确定性函数

 CREATE DETERMINISTIC FUNCTION ...
而且,你申报时不要撒谎。确保它确实是确定性的。也就是说,对于相同的输入,确保每次的结果都相同


然后它应该会工作。

是的,它应该会工作。你试过使用这个吗?@TimBiegeleisen我不知道在
SELECT。。。ORDER BY CmpRows(??,?)
——我如何告诉它使用主键代替参数?如果参数指向的行在调用之间可以更改,函数是否仍然具有确定性?否,如果给定相同的参数,结果有任何可能会更改,则函数不具有确定性。你可能想考虑一种不同的方法来排序你的结果集;如果你能让它工作的话,当你不想惊讶的时候,它可能会产生令人惊讶的结果。因此,如果它不是确定性的,我
选择…按CmpRows排序
然后更改一些行,然后
选择…按CmpRows排序
,那么第二次排序的顺序可能与第一次排序的顺序相同,或者类似的?