mysql创建可以声明和设置select结果的存储函数

kzipqqlq  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(277)

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

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)以供以后使用?我不想将所有内容都合并到一个查询中。

gab6jxml

gab6jxml1#

mysql没有数组,只能在一个变量中存储一个值。可以在中使用子查询 WHERE category IN ,和 UNION 把这两张table合起来。

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

或者使用 JOIN :

SELECT COUNT(*)
FROM listing_category
JOIN (        
    SELECT id FROM category1
    UNION
    SELECT id FROM category2
);

相关问题