Я хочу обработать результат запроса, используя "," внутри моей хранимой процедуры 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
learner 26 Авг 2011 в 09:57

2 ответа

Лучший ответ

Взгляните на функцию GROUP_CONCAT ? что-то вроде:

SELECT GROUP_CONCAT(id ORDER BY id DESC SEPARATOR ',') FROM temp;
8
elink 17 Апр 2013 в 12:14

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

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

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

1
Devart 26 Авг 2011 в 06:17