簡體   English   中英

如何在MySQL存儲過程中的MySQL查詢中使用隱​​式變量?

[英]How to use concated variable into mysql query inside mysql stored procedure?

我在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一樣。 而且在newid中,我得到的值如2301,2302,2303。 但是,當我在WHERE IN()中使用newid時,它只使用第一個id,即2301。我認為newids數據類型可能是原因,因為它是VARCHAR,而temptblnewcustomers的ID是BIGINT。 但是我不確定這是否會影響。

您可以直接在WHERE IN子句中使用Select查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM