我有一家 watch 网上商店。它有一个搜索过滤器。过滤的标准之一是表身的 Material 。它有很多独特的值(value)。例如:“钢”、“钢镀金”、“钢镀金”。
我尝试通过创建一个sql LIKE请求来过滤 watch ,以过滤钢体、金体的 watch 。但是,当搜索金色机身的 watch 时,它也给了我镀金的钢制 watch ,因为它包含“金”字。
你能提出一个好的解决方案来解决这个问题吗?
到目前为止我尝试了这个sql语句:
SELECT * FROM `watches` WHERE `material` LIKE "%gold%"
最佳答案
如果我这样做,我将创建一个名为“Material”的表,并为每种可用 Material 添加一条记录,然后将 Material ID 而不是单词存储在 watch 表中。 (这样做更好的原因有很多。)
Material 表:
id - Material
1 - Gold
2 - Gold Plated
3 - Silver
4 - Steel with Gold
然后在您的搜索中,您将允许用户选择他们感兴趣的 Material ,您的 sql 将如下所示:
Select * from Watches where Material IN (1,4);
这将显示一款由金或金钢制成的 watch 。而且您的搜索速度会更快。
关于php - mysql 逻辑有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15349963/