mysql - 按拆分字符串中的整数范围选择?

标签 mysql sql

我是 MySQL 的新手,目前遇到以下问题:

我有一个“报价”表,用户可以在其中向另一个用户提供报价,他向他提供游戏内元素。项目被放入数据字段中,ItemID 和 ItemLevel 由“:”分隔,项目由“,”分隔。

示例:“0:346,2:638,1:646”= 提供 ID 0 级别 346 和 ID 2 级别 638 和 ID 1 级别 646 的项目

现在我想用 PHP 创建一个查询,只选择具有特定 ID 和级别范围的报价。

我应该重建整个事情并使用 2 个不同的表“订单”和“order_data”来完成,还是可以通过一个简单的查询来实现这种过滤?

最佳答案

您必须规范化您的数据...如您所说,您应该在多个表和列之间分布订单数据。

但是,对于您的请求,有一个可能(且简单)的解决方案:

SELECT * FROM orders
WHERE 1=1
AND FIND_IN_SET('0:346', orderData)
;

FIND_IN_SET 函数返回搜索字符串的索引 - 如果它存在于列中 - 所以它通常用作 SELECT 字段以供排序了解字符串在逗号分隔字符串上的索引。但是,在本例中,您可以在 WHERE 子句中使用它,以便仅返回包含特定字符串的记录

关于mysql - 按拆分字符串中的整数范围选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39248499/

相关文章:

mysql - 这个查询可以不使用 Filesort 吗?

php - JQuery Post 到 PHP 插入数据,但 json 响应为 null

当我尝试创建表时 MySQL 抛出错误

sql - 聚合函数和其他列

SQLite 喜欢 % 和 _

sql - 如何创建一个标志,根据值是否占计数的大部分来获取列值的值?

c# - C#4.0任务库死锁

php - 如何在 laravel 5.3 eloquent 模型中定义关系?

session 列上的 MySQL 索引

php - 如何更新特定 ID 以接受或拒绝用户