我有两张 table 。
1。项目
id user_id image
1 12 -
2。 item_details
id item_id category_field_id value is_description
1 1 11 honda 0
2 1 12 xblade 0
3 1 13 X123 0
4 1 14 its a very good bike 1
这些表用于存储基于category_field_id的动态表单的项目详细信息。所以我需要的是
我需要基于用户搜索的精确匹配的所有项目列表
where (category_field_id = 11 AND value = honda)
AND (category_field_id = 12 AND value = xblade)
AND (category_field_id = 13 AND value = X123)
AND (category_field_id = 14 AND value LIKE search_string_from_website);
除了描述字段之外,所有字段都匹配并且like子句中的描述字段。 我已经尝试过,但无法得到任何适当的解决方案。请帮助我。
最佳答案
我认为您想要在不同的行上查找所有四个条件都为 true 的项目。这表明聚合:
select item_id
from item_details
group by item_id
having sum(category_field_id = 11 AND value = 'honda') > 0 and
sum(category_field_id = 12 AND value = 'xblade') > 0 and
sum(category_field_id = 13 AND value = 'X123') > 0 and
sum(category_field_id = 14 AND value LIKE 'search_string_from_website') > 0 ;
关于mysql - 用于根据多行查找匹配结果的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254627/