Я хочу обработать результат запроса, используя ","
внутри моей хранимой процедуры 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 ответа
Взгляните на функцию GROUP_CONCAT ? что-то вроде:
SELECT GROUP_CONCAT(id ORDER BY id DESC SEPARATOR ',') FROM temp;
Я думаю, ты мог бы это сделать -
DELETE mt FROM
main_table mt
LEFT JOIN temp t
ON mt.id = t.id
WHERE
t.id IS NULL;
Этот запрос удалит все записи в main_table, которых нет во временной таблице. Идентификаторы, разделенные запятыми, не нужны.
Похожие вопросы
Новые вопросы
mysql
MySQL - это бесплатная система управления реляционными базами данных с открытым исходным кодом (RDBMS), использующая язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. Д. Это разные БД, которые все используют свои собственные диалекты SQL для управления данными.