我试图在 MySQL (5.x) 的 WHERE 语句中使用存储函数的结果,但它失败了,因为在函数中我从表中选择值到一个 INT 变量然后返回它们/它,这显然如果 SELECT 返回超过 1 行,则不起作用。我试过返回一个 TABLE(因为我理解 TABLE 在 MySQL 中表示数组),但这也不起作用。
有什么方法可以让我做类似的事情:
SELECT ID FROM myTable WHERE ID IN my_function(params);
谢谢你。
我试图在 MySQL (5.x) 的 WHERE 语句中使用存储函数的结果,但它失败了,因为在函数中我从表中选择值到一个 INT 变量然后返回它们/它,这显然如果 SELECT 返回超过 1 行,则不起作用。我试过返回一个 TABLE(因为我理解 TABLE 在 MySQL 中表示数组),但这也不起作用。
有什么方法可以让我做类似的事情:
SELECT ID FROM myTable WHERE ID IN my_function(params);
谢谢你。
这是做不到的……
首先,您不能使用存储函数来返回多个结果——您需要使用存储过程。
MySQL 文档状态:
返回结果集的语句可以在存储过程中使用,但不能在存储函数中使用。
其次,您不能在查询中使用存储过程 - 请参阅这个SO question。
您是否考虑在查询结束时使用“HAVING ...”?