MySQL Создать хранимую функцию, которая может объявлять и устанавливать результаты выбора - PullRequest
0 голосов
/ 26 апреля 2018

Я хотел бы собрать идентификаторы из двух таблиц, объединить эти таблицы, чтобы использовать их оператор 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 голосов
/ 26 апреля 2018

MySQL не имеет массивов, вы можете хранить только одно значение в переменной. Вы можете использовать подзапрос в WHERE category IN и UNION для объединения двух таблиц.

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
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...