Как внедрить результат запроса в хранимую процедуру mysql5? - PullRequest
2 голосов
/ 26 августа 2011

Я хочу внедрить результат запроса, используя ",", внутри моей хранимой процедуры mysql. Как я могу это сделать?

Например,

CREATE DEFINER=`root`@`%` PROCEDURE mysp()

BEGIN

    DROP TABLE IF EXISTS  temp;
    CREATE TABLE temp (ids INT(11) , typeid INT(11));

   INSERT INTO temp SELECT id,typeid FROM table_mine1 ..etc

   INSERT INTO temp SELECT id,typeid FROM table_mine2 ..etc

После этого я хочу получить все "идентификаторы" из временной таблицы и сделать их разделенными запятыми.

Потому что мне нужно написать друг другу запрос, подобный этому

DELETE FROM main_table WHERE ids NOT IN (comma separated ids of temp table.)

Так что любое тело может помочь мне, как взорвать идентификаторы моей временной таблицы, используя запятую?

Спасибо

Ответы [ 2 ]

8 голосов
/ 26 августа 2011

Посмотрите на функцию GROUP_CONCAT ?что-то вроде:

SELECT GROUP_CONCAT(id ORDER BY id DESC SEPARATOR ',') FROM temp;
1 голос
/ 26 августа 2011

Я думаю, вы могли бы сделать это -

DELETE mt FROM
  main_table mt
LEFT JOIN temp t
  ON mt.id = t.id
WHERE
  t.id IS NULL;

Этот запрос удалит все записи в main_table, которых нет во временной таблице. Нет необходимости в разделенных запятыми идентификаторах.

...