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