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”甚至都不存在!难怪只有最后一个被退回。感谢所有帮助过的人!我会把它留在这里,希望它能帮助有类似问题的人。

4

2 回答 2

8

尝试

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))

输出:

| 项目 | 科罗拉多 |
--------------------
| 1 | 4 |
| 2 | 70 |
| 3 | 9 |

这是SQLFiddle演示

于 2013-07-26T09:43:19.410 回答
0
SELECT 
    *
FROM 
    A
WHERE 
    (itemNo = '1' AND colorNo = '4') OR
    (itemNo = '2' AND colorNo = '70') OR
    (itemNo = '3' AND colorNo = '9');

你是这个意思吗?

于 2013-07-26T09:51:35.867 回答