http://pastebin.ca/1946913当我在过程中写" in (1,2,4,5,6,7,8,9,10)“时,我得到了正确的结果,但当我在"IN”中添加id变量时,结果是不正确的。我在mysql上做了一个函数,但还是不能工作,我该怎么办?
发布于 2010-09-23 07:13:30
字符串(广义地说,变量值)不会在语句中插入。vKatID IN (id)检查vKatID是否等于列出的任何一个值,该值只有一个:id的值。您可以使用PREPARE and EXECUTE创建动态查询来插入值:
set @query = CONCAT('SELECT COUNT(*) AS toplam
FROM videolar
WHERE vTarih = CURDATE() AND vKatID IN (', id, ') AND vDurum = 1;')
PREPARE bugun FROM @query;
EXECUTE bugun;发布于 2010-09-23 07:14:26
您可以使用FIND_IN_SET( )而不是IN,例如:
SELECT COUNT(*) AS toplam
FROM videolar
WHERE vTarih = CURDATE()
AND FIND_IN_SET( vKatID, id ) > 0
AND vDurum = 1Sets有限制-例如,他们不能有超过64个成员。
发布于 2010-09-23 07:20:43
你的id变量是一个字符串(varchar)而不是一个数组(在SQL中是tuple)(在java中)
String id = "1,2,3,4,5,6,7"你想要的
int[] ids = {1,2,3,4,5,6,7}所以在你的代码中
set id = (1,2,3,4,5,6,7,8,9,10)我不知道声明id的语法,所以我不能帮你。我建议确保代码易于更新,创建一个仅包含is的表,然后将存储过程更改为
SELECT COUNT(*) AS toplam
FROM videolar
WHERE vTarih = CURDATE() AND vKatID IN (SELECT DISTINCT id FROM idtable) AND vDurum = 1;希望这能有所帮助。
https://stackoverflow.com/questions/3774260
复制相似问题