![](/img/trans.png)
[英]MySQL procedure syntax error, how to assign a value to the concated variable?
[英]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.