我有一张有以下数据的表格。
表名:mytable

prodID   catNo   variable1  variable2
1        20      Cat        Blue
2        10      Cat        Red
2        15      Cat        Green
2        20      Cat        Black
3        20      Cat        Yellow
4        10      Cat        Orange
4        15      Cat        Brown
4        20      Cat        Black
5        30      Cat        Pink

我希望能够从mytable中选择所有列,其中“prodid=2和catno=10”和“prodid=2和catno=15”。因此,只有在满足两个条件的情况下才能获取两行的结果,如果两行都不存在,则不会返回任何结果。
所以我的结果表会是这样的。
表名:结果
prodID   catNo   variable1  variable2
2        10      Cat        Red
2        15      Cat        Green

我试图使用条件if语句,但似乎无法使它们在sql中工作。我目前的解决方案是返回prodid=2的所有行,然后使用php执行if语句来决定显示什么,但这不适用于我为显示结果而设计的分页,因为我的限制会扭曲每页的结果数。
我知道我可以用“让count rows=2”这个词,但我不知道该怎么说。

最佳答案

如果只希望在catno(10,15)中找到记录时获得结果,但如果在(10,12)中查找catno,也返回0结果

SELECT * FROM `myTable`
WHERE (`prodID` = 2 AND `catNo` IN (10,15))
AND (SELECT COUNT(`catNo`) FROM `myTable` WHERE `prodID` = 2 AND `catNo` IN (10,15))>1;

三个卡托的
SELECT * FROM `myTable`
WHERE (`prodID` = 4 AND `catNo` IN (10,15,20))
AND (SELECT COUNT(`catNo`) FROM `myTable` WHERE `prodID` = 4 AND `catNo` IN (10,15,20))>2;

SQL Fiddle

09-09 19:30