mysql在select语句中的多行上分配变量

时间:2016-06-16 21:45:10

标签: mysql

我有这个SQL查询

SELECT DISTINCT category.title, category.id FROM category 
INNER JOIN request ON category.id = request.category_id;

+---------------+----+
| title         | id |
+---------------+----+
| Clothing      |  4 |
| Dance         | 12 |
| Entertainment | 37 |
+---------------+----+

如何将此查询的所有结果行作为另一个表中的文本获取,如:

update message set description = "category : <title>, id: <id>,";

select description from message;

+-------------------------------------------------------------------------------------+
| description        
+-------------------------------------------------------------------------------------+
| category : Clothing, id:  4, category : Dance id: 12 category : Entertainment id: 37|
+-------------------------------------------------------------------------------------+

我想使用存储过程执行此操作,但我是这方面的新手。 为你的时间而努力。

2 个答案:

答案 0 :(得分:0)

SELECT DISTINCT "Category: " + category.title + ", id: " + category.id + "," AS Description FROM category INNER JOIN request ON category.id = request.category_id;

作为存储过程(使用https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-stored-procedures.htmlhttp://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx):

DELIMITER //
CREATE PROCEDURE GetDescription
AS
BEGIN
    SELECT DISTINCT "Category: " + category.title + ", id: " + category.id + "," AS Description FROM category INNER JOIN request ON category.id = request.category_id;
END;
DELIMITER ;

答案 1 :(得分:0)

我使用&#34;选择......进入&#34;将所选字段的值存储到我声明的变量中,这样我就可以在另一个查询中使用这些变量

CREATE PRODECURE messagefetch()
    BEGIN
    DECLARE title varchar(50);
    DECLARE id int(7);

    SELECT DISTINCT category.title, category.id 
    FROM category 
    INTO title, id
    INNER JOIN request ON category.id = request.category_id;

    UPDATE message SET description = concat("category :", title, "id: ", id);
END