Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL多键、值、查询之间_Mysql - Fatal编程技术网

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.
名称是这方面的良好指标。