SELECT有两个AND条件

时间:2012-06-01 18:47:40

标签: mysql

我想在MySQL中使用SELECT语句,有两个AND条件。这是我的表和插入,后跟select语句。我没有从select语句中得到任何结果。

-- 
-- Table structure for table `indextable`
-- 

CREATE TABLE `indextable` (
  `post_id` bigint(40) NOT NULL,
  `key` varchar(20) NOT NULL,
  `value` varchar(20) NOT NULL,
  `cat_id` int(11) NOT NULL,
  KEY `key_2` (`key`),
  KEY `value_2` (`value`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- 
-- Dumping data for table `indextable`
-- 

INSERT INTO `indextable` VALUES (390, 'doors', '360', 398);
INSERT INTO `indextable` VALUES (390, 'body_type', '347', 398);
INSERT INTO `indextable` VALUES (390, 'seller_type', '11', 398);
INSERT INTO `indextable` VALUES (390, 'mechanical_condition', '6', 398);
INSERT INTO `indextable` VALUES (390, 'body_condition', '1', 398);
INSERT INTO `indextable` VALUES (390, 'kilometers', '', 398);
INSERT INTO `indextable` VALUES (390, 'year', '2012', 398);
INSERT INTO `indextable` VALUES (390, 'mobile', '', 398);
INSERT INTO `indextable` VALUES (390, 'price', '111111111111', 398);
INSERT INTO `indextable` VALUES (388, 'city', 'localhost', 398);
INSERT INTO `indextable` VALUES (388, 'description', '<!--:en-->dddddddddd', 398);
INSERT INTO `indextable` VALUES (388, 'title', '<!--:en-->555       ', 398);
INSERT INTO `indextable` VALUES (388, 'categories_name', 'Cars souq', 398);
INSERT INTO `indextable` VALUES (388, 'images', 'http://localhost/wor', 398);
INSERT INTO `indextable` VALUES (388, 'fuel_type', '380', 398);
INSERT INTO `indextable` VALUES (388, 'warranty', '725', 398);
INSERT INTO `indextable` VALUES (388, 'horsepower', '387', 398);
INSERT INTO `indextable` VALUES (388, 'transmission_type', '377', 398);
INSERT INTO `indextable` VALUES (388, 'color', '707', 398);
INSERT INTO `indextable` VALUES (388, 'no_of_cylinders', '365', 398);
INSERT INTO `indextable` VALUES (388, 'doors', '360', 398);
INSERT INTO `indextable` VALUES (388, 'body_type', '347', 398);
INSERT INTO `indextable` VALUES (388, 'seller_type', '11', 398);
INSERT INTO `indextable` VALUES (388, 'mechanical_condition', '6', 398);
INSERT INTO `indextable` VALUES (388, 'body_condition', '1', 398);
INSERT INTO `indextable` VALUES (388, 'kilometers', '', 398);
INSERT INTO `indextable` VALUES (388, 'year', '2012', 398);
INSERT INTO `indextable` VALUES (388, 'mobile', '', 398);
INSERT INTO `indextable` VALUES (388, 'price', '3333', 398);
INSERT INTO `indextable` VALUES (390, 'no_of_cylinders', '365', 398);
INSERT INTO `indextable` VALUES (390, 'color', '707', 398);
INSERT INTO `indextable` VALUES (390, 'transmission_type', '377', 398);
INSERT INTO `indextable` VALUES (390, 'horsepower', '387', 398);
INSERT INTO `indextable` VALUES (390, 'warranty', '725', 398);
INSERT INTO `indextable` VALUES (390, 'fuel_type', '380', 398);
INSERT INTO `indextable` VALUES (390, 'images', '', 398);
INSERT INTO `indextable` VALUES (390, 'categories_name', 'Cars souq', 398);
INSERT INTO `indextable` VALUES (390, 'title', '<!--:en-->ddddddddd<', 398);
INSERT INTO `indextable` VALUES (390, 'description', '<!--:en-->dddddddddd', 398);
INSERT INTO `indextable` VALUES (390, 'city', 'localhost', 398);
INSERT INTO `indextable` VALUES (392, 'price', '133', 398);
INSERT INTO `indextable` VALUES (392, 'mobile', '', 398);
INSERT INTO `indextable` VALUES (392, 'year', '2012', 398);
INSERT INTO `indextable` VALUES (392, 'kilometers', '222', 398);
INSERT INTO `indextable` VALUES (392, 'body_condition', '1', 398);
INSERT INTO `indextable` VALUES (392, 'mechanical_condition', '6', 398);
INSERT INTO `indextable` VALUES (392, 'seller_type', '11', 398);
INSERT INTO `indextable` VALUES (392, 'body_type', '347', 398);
INSERT INTO `indextable` VALUES (392, 'doors', '360', 398);
INSERT INTO `indextable` VALUES (392, 'no_of_cylinders', '365', 398);
INSERT INTO `indextable` VALUES (392, 'color', '707', 398);
INSERT INTO `indextable` VALUES (392, 'transmission_type', '377', 398);
INSERT INTO `indextable` VALUES (392, 'horsepower', '387', 398);
INSERT INTO `indextable` VALUES (392, 'warranty', '725', 398);
INSERT INTO `indextable` VALUES (392, 'fuel_type', '380', 398);
INSERT INTO `indextable` VALUES (392, 'images', '', 398);
INSERT INTO `indextable` VALUES (392, 'categories_name', 'Cars souq', 398);
INSERT INTO `indextable` VALUES (392, 'title', '<!--:en-->ddddddddd<', 398);
INSERT INTO `indextable` VALUES (392, 'description', '<!--:en-->dddddddddd', 398);
INSERT INTO `indextable` VALUES (392, 'city', 'localhost', 398);
INSERT INTO `indextable` VALUES (393, 'price', '111111111111', 398);
INSERT INTO `indextable` VALUES (393, 'mobile', '', 398);
INSERT INTO `indextable` VALUES (393, 'year', '2012', 398);
INSERT INTO `indextable` VALUES (393, 'kilometers', '', 398);
INSERT INTO `indextable` VALUES (393, 'body_condition', '1', 398);
INSERT INTO `indextable` VALUES (393, 'mechanical_condition', '6', 398);
INSERT INTO `indextable` VALUES (393, 'seller_type', '11', 398);
INSERT INTO `indextable` VALUES (393, 'body_type', '347', 398);
INSERT INTO `indextable` VALUES (393, 'doors', '360', 398);
INSERT INTO `indextable` VALUES (393, 'no_of_cylinders', '365', 398);
INSERT INTO `indextable` VALUES (393, 'color', '707', 398);
INSERT INTO `indextable` VALUES (393, 'transmission_type', '377', 398);
INSERT INTO `indextable` VALUES (393, 'horsepower', '387', 398);
INSERT INTO `indextable` VALUES (393, 'warranty', '725', 398);
INSERT INTO `indextable` VALUES (393, 'fuel_type', '380', 398);
INSERT INTO `indextable` VALUES (393, 'images', '', 398);
INSERT INTO `indextable` VALUES (393, 'categories_name', 'Cars souq', 398);
INSERT INTO `indextable` VALUES (393, 'title', '<!--:en-->ddddddddd<', 398);
INSERT INTO `indextable` VALUES (393, 'description', '<!--:en-->dddddddddd', 398);
INSERT INTO `indextable` VALUES (393, 'city', 'localhost', 398);
INSERT INTO `indextable` VALUES (398, 'price', '11333', 398);
INSERT INTO `indextable` VALUES (398, 'mobile', '', 398);
INSERT INTO `indextable` VALUES (398, 'year', '2012', 398);
INSERT INTO `indextable` VALUES (398, 'kilometers', '', 398);
INSERT INTO `indextable` VALUES (398, 'body_condition', '1', 398);
INSERT INTO `indextable` VALUES (398, 'mechanical_condition', '6', 398);
INSERT INTO `indextable` VALUES (398, 'seller_type', '11', 398);
INSERT INTO `indextable` VALUES (398, 'body_type', '347', 398);
INSERT INTO `indextable` VALUES (398, 'doors', '360', 398);
INSERT INTO `indextable` VALUES (398, 'no_of_cylinders', '365', 398);
INSERT INTO `indextable` VALUES (398, 'color', '707', 398);
INSERT INTO `indextable` VALUES (398, 'transmission_type', '377', 398);
INSERT INTO `indextable` VALUES (398, 'horsepower', '387', 398);
INSERT INTO `indextable` VALUES (398, 'warranty', '725', 398);
INSERT INTO `indextable` VALUES (398, 'fuel_type', '380', 398);
INSERT INTO `indextable` VALUES (398, 'images', 'http://localhost/wor', 398);
INSERT INTO `indextable` VALUES (398, 'categories_name', 'Cars souq', 398);
INSERT INTO `indextable` VALUES (398, 'title', '<!--:en-->aaaaaaaaaa', 398);
INSERT INTO `indextable` VALUES (398, 'description', '<!--:en-->aaaaaaaaaa', 398);
INSERT INTO `indextable` VALUES (398, 'city', 'localhost', 398);

SELECT distinct post_id FROM indextable as i WHERE ( i.key ='price' AND i.value BETWEEN 12 AND 1000 ) AND ( i.key ='year' AND i.value=2012 )

注意:当我只使用第一个条件或仅使用第二个条件时,我得到一个结果。

我想执行这样的查询:

SELECT distinct post_id 
FROM indextable as i 
WHERE ( i.key ='price' AND i.value BETWEEN 12 AND 1000 )
    AND ( i.key ='year' AND i.value=2012 )
    AND ( i.key ='body_condition' AND i.value=1 )
    AND ( i.key ='mechanical_condition' AND i.value=6 )
    AND ( i.key ='seller_type' AND i.value=11 )
    AND ( i.key ='body_type' AND i.value=347 )
    AND ( i.key ='doors' AND i.value=360 )
    AND ( i.key ='no_of_cylinders' AND i.value=365 )
    AND ( i.key ='color' AND i.value=707 )
    AND ( i.key ='transmission_type' AND i.value=377 )
    AND ( i.key ='horsepower' AND i.value=387 )
    AND ( i.key ='warranty' AND i.value=725 )
    AND ( i.key ='fuel_type' AND i.value=380 ) 

2 个答案:

答案 0 :(得分:1)

那是因为你的情况不对。

    SELECT distinct post_id FROM indextable as i 
WHERE ( i.key ='price' AND i.value BETWEEN 12 AND 1000 ) 
AND ( i.key ='year' AND i.value=2012 )

与使用

相同
    SELECT distinct post_id FROM indextable as i 
WHERE  i.key ='price' AND i.value BETWEEN 12 AND 1000 
AND  i.key ='year' AND i.value=2012

我认为你尝试做的是

    SELECT distinct post_id FROM indextable as i 
WHERE ( i.key ='price' AND i.value BETWEEN 12 AND 1000 ) 
OR ( i.key ='year' AND i.value=2012 )
编辑:你的意思是你没有这个结果?我复制你的表并做了查询,但它确实有效。

enter image description here

答案 1 :(得分:0)

 .... WHERE ( i.key ='price' AND i.value BETWEEN 12 AND 1000 ) AND 
            ( i.key ='year' AND i.value=2012 )

表示i.key的值必须是同一行中的“price”和“year”。这是不可能的,因此没有结果!

更改为

 .... WHERE ( i.key ='price' AND i.value BETWEEN 12 AND 1000 ) OR 
            ( i.key ='year' AND i.value=2012 )
相关问题