Как можно присвоить запросу select значение переменной и использовать его в другом запросе select в mysql

#mysql #subquery

#mysql #подзапрос

Вопрос:

У меня есть 10 с лишним запросов select. Во всех запросах мне нужно использовать общий подзапрос. Поэтому для повторного использования я подумал о том, чтобы поместить подзапрос в переменную и использовать его в других запросах select. Ниже приведен пример кода, который я пытаюсь, но он не работает.

 declare querySelect varchar(1000);
set querySelect="SELECT Id from orgs where orgType =5";

select * from organisation where Id in (select querySelect);
  

Комментарии:

1. Почему у вас 10 запросов?

Ответ №1:

Одним из вариантов здесь было бы создать представление:

 CREATE VIEW orgView AS
SELECT Id FROM orgs WHERE orgType = 5;
  

Затем выберите из этого представления в своих последующих запросах, например

 SELECT * FROM organisation WHERE Id IN (SELECT Id FROM orgView);
  

Ответ №2:

Вы можете использовать prepare statement

 set @querySelect="SELECT Id from orgs where orgType =5";
SET @sql = CONCAT("select * from organisation where Id in ( ",@querySelect," )");
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;