多行我的Sql AND Relation

问题描述

| 如何使用AND运算编写一组键值对的SQL查询 例如:
 id   proc_id     code     value
 1    1           height   \"\"
 2    1           weight   120
 3    1           chin     2
 4    1           lower    \"\"
 5    1           upper    10
我的值是这样的:{weight = 120,lower = 1,height = \“ \”} 我该如何应用AND关系来匹配确切的记录 输出:返回记录-[2,1]-#仅重量和高度匹配。     

解决方法

        有三种基本方法。 一种是根据需要加入多次:
select n.node_id
from node n
join meta m1 on m1.node_id = n.node_id
            and m1.code = \'weight\' and m1.value = \'120\'
join meta m2 on m2.node_id = n.node_id
            and m2.code = \'lower\' and m2.value = \'1\'
join meta m3 on m3.node_id = n.node_id
            and m3.code = \'height\' and m3.value = \'\'
另一种是分组并计数:
select n.node_id
from node n
join meta m on m.node_id = n.node_id
where m.code = \'weight\' and m.value = \'120\' or
      m.code = \'lower\' and m.value = \'1\' or
      m.code = \'height\' and m.value = \'\'
group by n.node_id
having count(*) >= 3
最后是避免在不适当的地方使用EAV,并正确规范化您的数据。     ,        由于各个值在不同的行中,因此您必须使用
OR
查询:
select id,proc_id,code,value
FROM yourtable
WHERE (code=\'HEIGHT\' and value = \'120\') OR
    (code=\'lower\' AND value = \'1\') OR
    (code=\'height\' AND value= \'\')
    ,        不确定我是否完全理解,但是如何做:
SELECT * FROM your_table
WHERE weight = 120 AND lower = 1 AND height = \'\'
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...