我正在使用以下查询并获取差异结果。
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
有人建议我使用字符串分割函数并将分割结果放入表格中,有人可以给我举个例子吗?
最佳答案
SELECT SUM(amt) FROM table1 WHERE id in (REPLACE("116,114",'"',"")) and another_id = 10;
如果我们知道您想要做什么,将会有所帮助。
据猜测,我怀疑您想要提供一种工具,让某人可以指定一组 id 并将其作为参数传递给查询。
一个简单的解决方案是:
WHERE CONCAT('%,', id, ',%') LIKE ('${submitted_string}')
但是这将无法使用table1.id上的任何索引
据我所知,MySQL 中无法将数组/字符串转换为表类型,因此您需要解析字符串并将值 temporaril;y 与引用 session 的键一起放入表中(或放入临时表)。在 SQL 中执行此操作相当困难 - 在顶部使用逻辑层要简单得多 - 根据我对您试图实现的目标的解释,您必须已经拥有逻辑层。
关于mysql 字符串分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096465/