2013-05-22 33 views
-1

表名稱:產品 列名和數據MySQL查詢:搜索同一列的多個時間

type  item  
------  ------- 
Electronic Mobile 
Mobile  Smartphone 
Smartphone Samsung 

那麼如何查詢應寫?我試過

select * from products where (type='Electronic' and item='Mobile') 
    and (type='Smartphone' and item='Samsung') 

回答

2

相反的AND,你需要OR。一個記錄不能是電子/手機智能手機/三星。

1

在你寫的查詢中,括號沒用 - 他們根本就什麼都不做。

Hoever,我認爲你應該使用一個或改爲:

SELECT* FROM products WHERE (type='Electronic' AND item='Mobile') OR (type='Smartphone' AND item='Samsung'); 

但此查詢將在大表表現不佳。所以,我有兩個建議:

1)用你真正需要的列表替換'*'。

2)分成2個查詢:

SELECT* FROM products WHERE type='Electronic' AND item='Mobile'; 
SELECT* FROM products WHERE type='Smartphone' AND item='Samsung'; 

...或者至少使用UNION

(SELECT* FROM products WHERE type='Electronic' AND item='Mobile') 
UNION ALL 
(SELECT* FROM products WHERE type='Smartphone' AND item='Samsung');