我想编写一个以整数作为输入的mysql函数,该函数执行select语句“select table from table_name”然后我希望该函数返回select语句的结果。
然后
在查询中我想做类似的事情:
从table_name中选择id,name,其中id为call function here that returns a list of ids
)。
这在mysql中是否有效?
先谢谢
答案 0 :(得分:1)
是的,您可以在MySql中使用子查询
类似于以下内容
select id,name from table_name1
where id in (select DISTINCT(table_name1_id) from table_name2)
答案 1 :(得分:1)
不,你不能在MySQL
中执行此操作。
返回结果集的MySQL
过程不能在子查询中使用。
如果你的函数只是一些SELECT
语句,你可以这样做:
SELECT id, name
FROM mytable1
WHERE id IN
(
SELECT id
FROM mytable2
WHERE value = @myinteger
UNION ALL
SELECT id
FROM mytable2
WHERE value = @myinteger
UNION ALL
…
)
或者,效率更高,
SELECT id, name
FROM mytable1 t1
WHERE EXISTS
(
SELECT NULL
FROM mytable2 t2
WHERE t2.id = t1.id
AND t2.value = @myinteger
UNION ALL
SELECT NULL
FROM mytable3 t2
WHERE t3.id = t1.id
AND t3.value = @myinteger
UNION ALL
…
)
答案 2 :(得分:0)
您不需要函数,可以使用子查询。
E.g。
select id,name from table_name where id in (select someIds from othertable)
答案 3 :(得分:0)
不确定。您可以使用存储过程,UDF甚至子查询。
看看:
答案 4 :(得分:0)
如果你真的需要使用某个功能,你可以:
CREATE FUNCTION my_func (in_id INT(11), value INT(11)) RETURNS INT(11) DETERMINISTIC
RETURN in_id IN (SELECT id FROM table_name WHERE id = value);
你会用它来称呼它:
SELECT id,name from table_name where myfunc(id, 1);
它通常很慢,因为MySQL无法优化其使用,但可以完成工作。