MYSQL多键、值、查询之间
我试图写一个这样的查询,但似乎无法解决:MYSQL多键、值、查询之间,mysql,Mysql,我试图写一个这样的查询,但似乎无法解决: WHERE ( meta_key = 'key' AND meta_value = 'value' BETWEEN min_value AND max_value ) AND ( meta_key = 'different_key' AND meta_value = 'different_value' BETWEE
WHERE
(
meta_key = 'key'
AND
meta_value = 'value' BETWEEN min_value AND max_value
)
AND
(
meta_key = 'different_key'
AND
meta_value = 'different_value' BETWEEN different_min_value AND different_max_value
)
换句话说,我想检查一个键的值是否在两个数字之间,另一个键的值是否在两个其他数字之间
当我使用OR运算符时,它返回两个相同的项,而我只需要一个
非常感谢您的帮助 它不能与
和
在一起。因为一行不能对同一列有不同的值
我认为您应该使用
UNION
query或self-join
您需要两次加入表,以测试两行上的两个不同条件。这在EAV设计中很常见(有很多连接):
FROM
tableX AS a
JOIN
tableX AS b
ON b.identifyingColumn = a.identifyingColumn
WHERE
(
a.meta_key = 'key'
AND
a.meta_value BETWEEN min_value
AND max_value
)
AND
(
b.meta_key = 'different_key'
AND
b.meta_value BETWEEN different_min_value
AND different_max_value
)
“它返回两个相同的项目,而我只想要一个。”---这是不可能的。对于没有joinsOh的琐碎查询,每一行只能返回一次。这是关于EAV的:这是另一个证明,如果您选择了EAV来解决您的任务,那么您已经非常成功了wrong@zerkms:我认为Wordpress使用了这些名称(
meta_key
,meta_value
),但它可能是其他EAV设计。meta.
名称是这方面的良好指标。