如何在mysql存储过程中使用concated变量进行mysql查询?

如何在mysql存储过程中使用concated变量进行mysql查询?,mysql,stored-procedures,Mysql,Stored Procedures,我在mysql存储过程中有一个concat字符串。我想在同一存储过程的where子句中使用该字符串。但当我使用它时,我只得到第一个值,因为它是逗号分隔的字符串(1,2,3)。所以我不明白为什么会发生这种情况,以及解决办法是什么。如果有人知道原因和解决方案,那么我们将不胜感激。这是存储过程的代码 DECLARE newids VARCHAR(255); SELECT GROUP_CONCAT(id) INTO newids FROM temptblnewcustomers; DROP TABL

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

在这里,TestBlNewCustomers只包含一列和五行,它们的值与任何id一样。在NewID中,我得到的值类似于230123022303。但是当我在WHERE IN()中使用newid时,它只需要第一个id,即2301。我认为newids数据类型可能是有原因的,因为它是VARCHAR,而TestBlNewCustomers的id是BIGINT。但我不确定这是否会影响。

您可以在
WHERE in
子句中直接使用Select查询