Mysql 我的Sql和多行关系

Mysql 我的Sql和多行关系,mysql,Mysql,如何使用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操作编写键值对集的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=”“}

如何应用和关联匹配精确记录

输出:返回记录-[2,1]-#仅匹配体重和身高

我不确定我是否完全理解,但是这个怎么样:

SELECT * FROM your_table
WHERE weight = 120 AND lower = 1 AND height = ''

由于各个值位于单独的行中,因此必须使用
查询:

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 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

最后一个是避免在不合适的地方使用where,并正确地规范化数据。

此查询没有“weight”或“lower”或“height”字段。只有“代码”和“值”啊,刚开始的格式太差了,我错过了!你的当然在现场,这是错误的。他想要符合所有条件的行。我尝试了这个,但条件应该显示记录,如果两者都为真,则没有记录。谢谢丹尼斯,是的,我一直在找这个,我的错,这里是什么。另一个联接表。thanksnode是您的数据表(person?=>id、name等)。meta是您的eav表(person\u属性?=>id、proc\u id、code、value)。