mysql - 用于根据多行查找匹配结果的 SQL 查询

标签 mysql sql node.js sequelize.js

我有两张 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/

相关文章:

php - 以编程方式替换 sql 查询中的 SELECT 字段以确定结果数

java - 使用 Java 导入 SQL

php - 使用空变量/值更新 MySQLi

php - 保存数据库连接详细信息

java - 执行 JPA 一对一时引用的属性未知

php - 如何选择每个日期间隔的唯一身份访问者?

node.js - 芒果支付nodejs sdk

mysql - 如何为表中字段的所有列赋予单一值?

Javascript:错误:找不到模块 '../data/icons/table.png'

javascript - Node.js - console.log 不显示数组中的项目而是显示 [Object]