MYSQL多键,值,查询之间

时间:2012-02-29 08:51:39

标签: 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' BETWEEN different_min_value AND different_max_value
    )

换句话说,我想检查一个键的值是否在两个数字之间,另一个键的值是否在两个其他数字之间。

当我使用OR运算符时,它返回两个相同的项目,当我只想要一个。

非常感谢帮助!

2 个答案:

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