通过计算匹配的数量,您可以用一种通用的方式(只需要将逗号分隔的字符串作为参数传递)实现此功能
sub_category_id
(使用
FIND_IN_SET
要找到它们)并将其与字符串中的值的数目(可以通过从原始长度中减去逗号的长度来确定)进行比较:
SELECT recipe_id
FROM recipe_categories
WHERE FIND_IN_SET(sub_category_id, '2,3,5')
GROUP BY recipe_id
HAVING COUNT(DISTINCT sub_category_id) = LENGTH('2,3,5') - LENGTH(REPLACE('2,3,5', ',', '')) + 1
输出(用于示例数据)
recipe_id
1
Demo on dbfiddle