【问题标题】:How to implode a query result inside a mysql5 stored procedure?如何在 mysql5 存储过程中内爆查询结果?
【发布时间】:2011-08-26 05:57:56
【问题描述】:

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

【问题讨论】:

    标签: mysql sql stored-procedures


    【解决方案1】:

    看看GROUP_CONCAT function? 类似:

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

    【讨论】:

      【解决方案2】:

      我认为你可以这样做 -

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-10
        • 1970-01-01
        • 2012-07-15
        • 1970-01-01
        • 2018-12-27
        • 2011-07-02
        • 1970-01-01
        • 2023-02-05
        • 1970-01-01
        相关资源
        最近更新 更多