我正在尝试编写这样的查询,但似乎无法解决这个问题:
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运算符时,它返回两个相同的项目,当我只想要一个。
非常感谢帮助!
答案 0 :(得分:1)
您需要两次加入表格以测试2行的2个不同条件。这在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
)
答案 1 :(得分:0)
不能与AND
一起使用。因为一行不能为同一列提供不同的值。
我认为您应该选择UNION
查询或self join
。