如何在mysql5存储过程中内爆查询结果?

时间:2011-08-26 05:57:57

标签: mysql sql stored-procedures mysqli

我想在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

在此之后我想从临时表中获取所有“ID”并将其设置为以逗号分隔。

因为我需要像这样编写另一个查询

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

所以任何身体都可以帮我解决如何使用逗号破坏临时表的ID?

由于

2 个答案:

答案 0 :(得分:8)

看看GROUP_CONCAT function? 类似的东西:

SELECT GROUP_CONCAT(id ORDER BY id DESC SEPARATOR ',') FROM temp;

答案 1 :(得分:1)

我认为你可以这样做 -

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

此查询将删除main_table中临时表中不存在的所有记录。逗号分隔的ID不需要。