如何使用Mysql

时间:2016-02-04 21:08:08

标签: mysql

我有表格结构,例如:

id | fabric_texture
123 | 70:cotton,20:polyeste,10:cmere

我应该如何创建一个mysql选择按百分比棉花搜索,聚酯... 我尝试了 FIND_IN_SET ,但无法使用百分比值。

更新 搜索面料含有50%以上的棉或20%以下的聚酯纤维。

重要:棉花,聚酯......是动态的

2 个答案:

答案 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

要获取有关该项目的其他详细信息,您可以将其加入主项目表。

此架构优于cottonpolyester等原始表中的列的优点是,它不需要您将结构名称硬编码到表结构中。如果出现了新的结构,您可以为这些产品添加新的结构。

答案 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 | .....