mysql字符串拆分

时间:2011-11-11 15:48:07

标签: mysql sql aggregate-functions

我正在使用以下查询并获得差异结果。

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

我被建议使用字符串拆分功能并将拆分放在表中,有人可以指点我的例子吗?

2 个答案:

答案 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;