我正在使用以下查询并获得差异结果。
SELECT SUM(amt) FROM table1 WHERE id in (114,116) and another_id = 10;
result is 10+20 = 30
SELECT SUM(amt) FROM table1 WHERE id in (REPLACE("116,114",'"',"")) and another_id = 10;
result is 10
我被建议使用字符串拆分功能并将拆分放在表中,有人可以指点我的例子吗?
答案 0 :(得分:1)
SELECT SUM(amt) FROM table1 id in id(REPLACE(“116,114”,'“',”“))和another_id = 10;
如果我们知道你想要做什么会有所帮助。
猜测一下,我怀疑你想要提供一个设施,让某人可以指定一组id并将其作为参数传递给查询。
一个简单的解决方案是:
WHERE CONCAT('%,', id, ',%') LIKE ('${submitted_string}')
但是这将无法在table1.id上使用任何索引
AFAIK没有办法将数组/字符串转换为MySQL中的表类型,因此您需要解析字符串并将值temporaril; y与引用会话的键一起放入表中(或者放入一个表中)临时表)。在SQL中执行此操作是相当困难的工作 - 在顶部使用逻辑层要简单得多 - 根据我对您要实现的目标的解释,您必须已经拥有它。
答案 1 :(得分:0)
根据您的代码,ID ID是一个数字字段......
尝试第二个例子......
SELECT SUM(amt) FROM table1 WHERE ","+CAST(id AS CHAR)+"," in (","+"116,114"+",")
and another_id = 10;