2013-07-26 90 views
1

表A如何在單個查詢中選擇具有多個特定列值的行?

itemNo colorNo 
1  3 
1  4 
2  4 
2  70 
3  9 
3  10 

我想做到這一點...

SELECT * 
FROM A 
WHERE itemNo = '1' AND colorNo = '4'; 
SELECT * 
FROM A 
WHERE itemNo = '2' AND colorNo = '70'; 
SELECT * 
FROM A 
WHERE itemNo = '3' AND colorNo = '9'; 

但我可以結合這3個查詢到嗎?

我試圖做到這一點,但它只返回滿足最後一個條件的一行。

SELECT * 
FROM A 
WHERE ((itemNo = '1' AND colorNo = '4') 
or (itemNo = '2' AND colorNo = '70') 
or (itemNo = '3' AND colorNo = '9')); 

編輯:事實證明,我得到的表是錯誤的。前兩個'itemNo'根本不存在!難怪只有最後一個得到回報。感謝所有幫助過我的人!我會把它留在這裏,希望它能幫助有類似問題的人。

+2

你的第二個查詢是完美的。 [它返回三行](http://sqlfiddle.com/#!2/49f0ca/1)。現在有什麼問題? – hims056

+0

你也可以使用UNION,或OR條件 –

+0

奇怪。我使用的是HeidiSQL,它只給我一個結果。也許HeidiSQL和普通的MySQL有一些區別? – ehz350

回答

9

嘗試

SELECT * 
    FROM A 
WHERE (itemNo = '1' AND colorNo = '4') 
    OR (itemNo = '2' AND colorNo = '70') 
    OR (itemNo = '3' AND colorNo = '9') 

,或者您也可以做到這一點

SELECT * 
    FROM A 
WHERE (itemNo, colorNo) IN ((1, 4),(2, 70),(3, 9)) 

輸出:

 
| ITEMNO | COLORNO | 
-------------------- 
|  1 |  4 | 
|  2 |  70 | 
|  3 |  9 | 

這裏是SQLFiddle演示

+1

這是完美的查詢。但他已經厭倦了。不知道他爲什麼沒有得到預期的結果。 – hims056

+1

@Rayf [不,原始查詢完美無缺。](http://sqlfiddle.com/#!2/49f0ca/1) –

0
SELECT 
    * 
FROM 
    A 
WHERE 
    (itemNo = '1' AND colorNo = '4') OR 
    (itemNo = '2' AND colorNo = '70') OR 
    (itemNo = '3' AND colorNo = '9'); 

是你的意思嗎?

相關問題