我在表中有多个记录:
UserTable:
UID AGE Contact
22 61 8899778899
14 45 8877556644
16 75 7894561246
我想编写一个程序,它将接受 UID 列表并返回相应的联系号码。
Input output
<22,14,16> <(22,8899778899),(14,8877556644),(16,7894561246)>
我尝试过以下过程,
drop procedure if exists testWC;
CREATE PROCEDURE testWC(Array_String VARCHAR(100))
BEGIN
SELECT UID,Contact FROM UserTable
WHERE UID IN (Array_String);
END
call testWC('22,14,16');
Result:
UID Contact
22 8899778899
但它只占用列表中的 22 个元素,即字符串列表中的第一个元素。请帮助我提供宝贵的建议。
最佳答案
我不知道为什么它不起作用。我在类似的情况下使用了准备好的语句,并且它在这种情况下有效。
CREATE PROCEDURE testWC(Array_String VARCHAR(100))
BEGIN
SET @stmt = CONCAT('SELECT UID, Contact FROM UserTable WHERE UID IN (', Array_String, ')');
PREPARE q FROM @stmt;
EXECUTE q;
DEALLOCATE PREPARE q;
END //
我会让您根据需要设置结果的格式。
关于mysql - 如何在一个动态选择查询中编写多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34511691/