【发布时间】:2015-03-11 06:07:32
【问题描述】:
我有一张包含以下数据的表格。
表名:我的表
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) AND (prodID = 2 和 catNo = 15)”。因此,只有在满足两个条件时才能获得两行的结果,如果两行都不存在,它将不返回任何内容。
所以我的结果表将如下所示。
表名:结果
prodID catNo variable1 variable2
2 10 Cat Red
2 15 Cat Green
我尝试使用条件 if 语句,但似乎无法让它们在 sql 中工作。我当前的解决方案是取回 prodID = 2 的所有行,然后使用 php 执行 if 语句来决定显示什么,但这不适用于我为显示结果而设计的分页,因为我的限制会扭曲每页的结果数。 我知道我可以使用 'have count rows=2' 但我不知道如何措辞。
【问题讨论】:
-
将 AND 替换为 OR 它将起作用“(prodID = 2 and catNo = 10) OR (prodID = 2 and catNo = 15)”。
-
where prodID = 2 and (catNo = 10 OR catNo = 15)? -
获取超过 1 个 catNo 的行:
SELECT *, COUNT(catNo) FROM myTable HAVING COUNT(catNo) > 1 -
很抱歉在每条评论上都发布了此内容,但大多数人似乎不理解我的要求。
这两个条件都必须为真,因此不能选择“OR”。如果 'catNo =15' 的行不存在,那将返回一个结果。只有当它们都存在时,我才需要这两行。
并且 count(catNo)>1 将返回所有超过 1 个 catNo 的行。
标签: php mysql sql database multiple-conditions