MySQL创建可以声明和设置选择结果的存储函数

时间:2018-04-26 17:24:50

标签: mysql stored-functions

我想从两个表中收集id,合并这些表以使用它们的IN语句来查找计数(*),如下所示:

   drop function if exists listing_count;
   create function listing_count(parent int(11)) returns int(11) deterministic 
   begin 
    declare count int(11) default 0;
    declare ARRAY1;
    declare ARRAY2;
    set ARRAY1=(select id from category1); 
    set ARRAY2=(select id from category2); 
    set count=(select count(*) from listing_category where category in(ARRAY1+ARRAY2));
    return count;
   end

是否可以设置并声明所选结果(ARRAY1和ARRAY2)以便稍后使用? 我不想将所有内容合并为一个查询

1 个答案:

答案 0 :(得分:0)

MySQL没有数组,只能在变量中存储单个值。您可以在splitWHERE category IN中使用子查询来组合这两个表。

UNION

或使用SELECT COUNT(*) FROM listing_category WHERE category IN ( SELECT id FROM category1 UNION SELECT id FROM category2 );

JOIN