我是MySQL的新手,我目前遇到以下问题:
我有一张桌子“优惠”,用户可以向其他用户提供优惠,他向他提供游戏内容。这些项目放在数据字段中,ItemID和ItemLevel用“:”分隔,迭代用“,”。
示例:“0:346,2:638,1:646”=提供ID为0级346且ID为2级且ID为1级646的项目
现在我想用PHP创建一个查询,只选择具有特定ID和范围的商品。
我应该重建整个事情并使用2个不同的表“orders”和“order_data”来完成它,还是可以通过简单的查询来实现这种过滤?
答案 0 :(得分:0)
您必须规范化您的数据......正如您所说,您应该在多个表和列之间分配订单数据。
但是,您的请求有一个可能(简单)的解决方案:
SELECT * FROM orders
WHERE 1=1
AND FIND_IN_SET('0:346', orderData)
;
FIND_IN_SET
函数返回搜索字符串的索引 - 如果它存在于列上 - 所以它通常用作SELECT
字段以便知道逗号分隔字符串的字符串索引。但是,在这种情况下,您可以在WHERE
子句上使用它,以便仅返回包含特定字符串的记录。