我有表格结构,例如:
id | fabric_texture
123 | 70:cotton,20:polyeste,10:cmere
我应该如何创建一个mysql选择按百分比棉花搜索,聚酯... 我尝试了 FIND_IN_SET ,但无法使用百分比值。
更新 搜索面料含有50%以上的棉或20%以下的聚酯纤维。
重要:棉花,聚酯......是动态的
答案 0 :(得分:3)
您应该将fabric_texture
移到新表中,其中所有内容都在其自己的列中。
CREATE TABLE fabric_texture (
item_id INT,
fabric VARCHAR(32),
percentage INT,
UNIQUE KEY (item_id, fabric)
);
然后你可以进行查询:
SELECT t1.item_id
FROM fabric_texture AS t1
JOIN fabric_texture AS t2 ON t1.item_id = t2.item_id
WHERE t1.fabric = 'cotton' AND t1.percentage > 50
AND t2.fabric = 'polyester' AND t2.percentage < 20
要获取有关该项目的其他详细信息,您可以将其加入主项目表。
此架构优于cotton
,polyester
等原始表中的列的优点是,它不需要您将结构名称硬编码到表结构中。如果出现了新的结构,您可以为这些产品添加新的结构。
答案 1 :(得分:0)
我建议编辑你的表,为每个可能的结构类型都有一个列然后可以和百分比相关联,然后你可以查询
"select * from fabrics where cotton = 70"
或在您的评论示例中
"select * from fabrics where cotton <= 50"
所以你的旧桌子是
id | fabric_texture
你的新表是
_id | cotton = INT | poly = INT | cmere = INT | etc = INT |
int表示值0-100(0-100%)
从你的例子中可以看出
123 | 70 | 20 | 10 | 0 | 0 | .....