我有一张有以下数据的表格。
表名: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