我是 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/