我正致力于搜索电子商务平台的算法。该平台能够为不同的产品创建变体,产品的所有可用变体都包含在逗号分隔列中。以下是所有领域。
product_id
- 例如1 variation_combo
- 例如54,35,49(这些是逗号分隔的ID,用于不同的变体)product_name
- 例如“Nike brandded Tshirt”这就是我想要实现的目标,例如
SELECT product_id FROM table where variation_combo contains 35 AND 54 AND 49
SELECT product_id FROM table where variation_combo contains 35 AND 54
SELECT product_id FROM table where variation_combo contains 49
答案 0 :(得分:2)
您可以使用LIKE关键字
SELECT product_id FROM table where variation_combo LIKE '%35%' AND LIKE '%54%' AND LIKE '%49%'
我希望这会有所帮助
答案 1 :(得分:2)
参考: MySQL query finding values in a comma separated string
select product_id from table where find_in_set('35',variation_combo) <> 0 and
find_in_set('54',variation_combo) <> 0 and find_in_set('49',variation_combo) <> 0
答案 2 :(得分:1)
我强烈建议您重新设计列表值并将其移动到详细信息表中。
但是,如果您完全绑定到字段设计中的列表,则可以使用RLIKE
检查列表中的值。如果ID只是字母数字(或者更确切地说,不包含001-01
等字边界),则任何单个ID都可以与\bID\b
正则表达式匹配。所以你的陈述将转向
SELECT product_id
FROM table
where variation_combo RLIKE '\\b35\\b'
AND variation_combo RLIKE '\\b54\\b'
AND variation_combo RLIKE '\\b49\\b'
SELECT product_id
FROM table
where variation_combo RLIKE '\\b35\\b'
AND variation_combo RLIKE '\\b54\\b'
SELECT product_id
FROM table
where variation_combo RLIKE '\\b49\\b'