MySQL SELECT WHERE id IN函数()

时间:2015-10-23 14:09:39

标签: mysql function

我有一个返回 VARCHAR 的函数。

它将始终为空字符串“”或单个ID“1”或ID“1,2,3,4,5”。

然后我有了这个问题:

SELECT id, title FROM category WHERE id IN getIds(1);

但它只返回第一项,因为它是一个字符串,例如。 1,而不是1,2,3。

有没有办法告诉MySQL它应该不使用它作为字符串?

1 个答案:

答案 0 :(得分:1)

由于MySQL不支持表值函数。你有两个选择:

1)使用FIND_IN_SET https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set AND http://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php"此函数返回函数的第一个参数中给出的字符串的位置,在逗号分隔的列表中给出的字符串第二个论点。列表的第一个元素是1.如果在集合中找不到字符串,则返回0。如果任一参数为NULL,则返回NULL。"

SELECT id, title FROM category WHERE FIND_IN_SET(id, getIds(1)) > 0

2)填充临时表并将其与IN运算符

一起使用
SELECT id, title FROM category WHERE id IN (SELECT Id FROM myTempTable)

方法#1似乎更适合这种情况。