mysql多where子句不起作用
基于此表mysql多where子句不起作用,mysql,Mysql,基于此表 key sampleID rs A1 A2 1 12345 rs123 C C 2 12345 rs345 C C 3 11110 rs123 C C 4 11110 rs345 C A 此声明 SELECT sampleID FROM QS_base
key sampleID rs A1 A2
1 12345 rs123 C C
2 12345 rs345 C C
3 11110 rs123 C C
4 11110 rs345 C A
此声明
SELECT sampleID
FROM QS_base
WHERE (rs = 'rs123' AND A1 = 'C' AND A2 = 'C')
OR (rs = 'rs345' AND A1 = 'C' AND A2 = 'C')
SELECT sampleID
FROM QS_base
WHERE (rs = 'rs123' AND A1 = 'C' AND A2 = 'C')
AND (rs = 'rs345' AND A1 = 'C' AND A2 = 'C')
返回
12345
12345
11110
这句话呢
SELECT sampleID
FROM QS_base
WHERE (rs = 'rs123' AND A1 = 'C' AND A2 = 'C')
OR (rs = 'rs345' AND A1 = 'C' AND A2 = 'C')
SELECT sampleID
FROM QS_base
WHERE (rs = 'rs123' AND A1 = 'C' AND A2 = 'C')
AND (rs = 'rs345' AND A1 = 'C' AND A2 = 'C')
不返回任何记录。我希望它会回来
12345
12345
为什么它不返回任何结果,并且有没有一种方法可以写入它以获得上述结果 您正在寻找的样本中,rs同时为'rs123'和'rs345'。查询只单独查看行。在第二个示例中,您有排除条件。where条款:
WHERE (rs = 'rs123' AND A1 = 'C' AND A2 = 'C') AND (rs = 'rs345' AND A1 = 'C' AND A2 = 'C')
云可以写为:
WHERE rs = 'rs123' AND rs = 'rs345' AND A1 = 'C' AND A2 = 'C'
在同一时间,rs不能等于rs123和rs345:
至于你问题的第二部分,是的,它当然可以返回你需要的结果。只要写下:
WHERE (rs = 'rs123' AND A1 = 'C' AND A2 = 'C')
我假设您对此查询有其他要求,如果有,请在您的帖子中说明。并且需要同时满足这两个条件,并且无法找到具有两个不同条件的行
您可以使用出口来执行此操作
您可以使用group by获得您想要的,并拥有:
它不会返回,因为您同时使用AND运算符,单行不能同时具有值rs='rs123'和rs='rs345'。如果需要不同的值,请在选择中使用不同的值。联合也是一个不错的选择。@CoderofCode谢谢,但不会使用不同的值删除重复项?您已更新了输出。在第一次输出时,您需要单个值,这就是为什么使用DIstinct。您可以查看删除重复项的@Gordon或@Abhik应答器,但我需要它来满足这两个条件,即子句必须是AND而不是or。您可以使用IN子句。但您不能仅基于RS、A1和A2列筛选提供的表。值的组合是相同的。是小提琴的例子。@gungu。having子句确保两个条件都满足。非常好,戈登,谢谢你指出这一点。您的查询实际上是最快的。其目的是返回所有列sampleID,其中列rs、A1和A2与指定的模式匹配。此操作有效。非常感谢。现在假设我想匹配一个额外的条件,例如rs='rs678'和A1='C'和A2='C',你能提供一个示例吗?pls必须添加另一个,并在末尾as AND exists从QS_base t3中选择1,其中t1.sampleID=t3.sampleID和t3.rs='rs678'和t3.A1='C'和t3.A2='C'