我从名为的表中获取记录Pizza_Table。
Pizza_Table
Pizza_table 架构图
Pizza_table
id | pizza name | pizza_topping_ids 1 | pizza1 |1,2,3 2 | pizza2 |2,3 3 | pizza3 |4,5,6
实际上,我的功能是根据pizza_topping_ids 我在此搜索中分配的工作来搜索披萨。但我找不到合适的解决方案。。
pizza_topping_ids
我不能使用IN子句来获取记录。
IN
我已经尝试了:
1)
SELECT * FROM `pizza_table` WHERE `pizza_topping_id` REGEXP '[[:<:]]2[[:>:]]'
问题:获取所有具有价值的记录 2
2
2)
SELECT * FROM `pizza_table` WHERE `pizza_topping_id` REGEXP '[[:<:]]1,2,3,4[[:>:]]'
但MySQL返回的结果集为空,
如果以逗号分隔的值与任何记录都不匹配,则返回topping_id列中最有价值的结果。
topping_id
例:如果我在上面的查询中查找了具有1,2,3,4 topping_id的披萨,但是在数据库中不存在具有topping_id组合的披萨,那么结果将是覆盖最多的ID,应显示为’pizza1’具有pizza_topping_id1,2,3。
pizza_topping_id1,2,3
对不起,英语以及格式也很糟糕,但是请尝试理解我的问题。提前致谢。
请帮我。
只需尝试-
SELECT * FROM `pizza_table` WHERE FIND_IN_SET(2,pizza_topping_id)
或REGEXP
SELECT * FROM `pizza_table` WHERE pizza_topping_id REGEXP '^2,|,2$|,2,' OR pizza_topping_id =2
请看演示:demo