mysql 字符串分割

标签 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

有人建议我使用字符串分割函数并将分割结果放入表格中,有人可以给我举个例子吗?

最佳答案

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/

相关文章:

mysql - 使用 JOIN 而不是 WHERE OR... IN 子查询

mysql - Eloquent 不会更新 MySQL 中的所有记录

sql - 加入连接条件?

mysql - 将数据从 mysql 数据库传输到 postgresql 数据库

javascript - 在断开连接的状态下运行(移动)网络应用程序?

sql-server - 不能使用 MIN、MAX 等 SQL Server 2012

aggregate-functions - 从表中选择 MAX( ) 的最快方法

mysql - SQL 仅选择列上具有最大值的行

javascript - NULL 与 MySQL、PHP、JSON 和 JavaScript

php - MYSQL重复行