如何在mysql存储过程里面使用concated变量进入mysql查询?

时间:2016-01-29 09:26:12

标签: mysql stored-procedures

我在mysql存储过程中有一个concat字符串。我想在同一存储过程中的where子句中使用该字符串。但是当我使用它时,我只得到第一个值,因为它是逗号分隔的字符串(1,2,3)。所以我无法理解为什么会发生这种情况以及它是什么解决方案。如果有人知道原因和解决方案,那么答案将不胜感激。这是存储过程的代码。

DECLARE newids VARCHAR(255);

SELECT GROUP_CONCAT(id) INTO newids FROM temptblnewcustomers;

DROP TABLE IF EXISTS temptblcustomerspurchase;
CREATE TABLE temptblcustomerspurchase (b_id BIGINT(20), b_customer BIGINT(20), a_item VARCHAR(50));
INSERT INTO temptblcustomerspurchase(b_id, b_customer, a_item)
    SELECT b.id AS b_id, b.customer_id AS b_customer, a.item AS a_item FROM purchases a JOIN (
        SELECT id, customer_id, item FROM (
            SELECT id, customer_id, item FROM purchases WHERE customer_id IN (newids) ORDER BY customer_id, id DESC) t 
        GROUP BY customer_id) b
    ON a.item=b.item;

这里,temptblnewcustomers只包含一列,其中五行的值与任何id一样。而且在newids中,我的价值就像2301,2302,2303。但是当我在WHERE IN()中使用newids时,它需要第一个id,即2301.我认为可能有newids数据类型的原因,因为它是VARCHAR,而temptblnewcustomers的id是BIGINT。但我不确定这会影响。

1 个答案:

答案 0 :(得分:0)

您可以直接在WHERE IN条款中使用选择查询。