在拆分字符串中按整数范围选择?

时间:2016-08-31 11:33:21

标签: mysql sql

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

我有一张桌子“优惠”,用户可以向其他用户提供优惠,他向他提供游戏内容。这些项目放在数据字段中,ItemID和ItemLevel用“:”分隔,迭代用“,”。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

FIND_IN_SET函数返回搜索字符串的索引 - 如果它存在于列上 - 所以它通常用作SELECT字段以便知道逗号分隔字符串的字符串索引。但是,在这种情况下,您可以在WHERE子句上使用它,以便仅返回包含特定字符串的记录