如何在mysql中检索两列值不同的行

9njqaruj  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(66)

SQL新手在这里。我有一个mysql表与行像
| 一|B| C| D| e| F|
| --|--|--|--|--|--|
| Abra| CA| da|胸罩|sa| 7 |
| Abra| fa|会|的|莫| 8 |
| AC| St| da|胸罩|sa| 10 |
| AC| CA| da|胸罩|莫| 9 |
| pa| ni| rar|专利|sa| 11 |
| pa| PU|胸罩|sa|莫| 11 |
e中的值是samo。对于列a的每个值,总是有两行,一行是sa,另一行是mo(加上其他几行)。
我想获取所有具有相同列a值的行,但samo行在其列f中具有不同值。因此对于上面的示例,查询将过滤掉最后2行,因为它们在列f中都具有值11,并将返回
| 一|B| C| D| e| F|
| --|--|--|--|--|--|
| Abra| CA| da|胸罩|sa| 7 |
| Abra| fa|会|的|莫| 8 |
| AC| St| da|胸罩|sa| 10 |
| AC| CA| da|胸罩|莫| 9 |
我尝试了这个查询,但它没有返回正确的数据

select * from table t1 where exists 
(select 1 from table t2 where t1.a <> '' 
and t2.a <> '' and t1.a=t2.a and (t2.e='sa' or t2.e='mo') and t1.e=t2.e and t1.f<>t2.f)  order by a

字符串

idv4meu8

idv4meu81#

首先确定a的哪些值具有f的2个值,然后只包括具有a的那些值的行,怎么样?

SELECT *
FROM t1
WHERE e IN ('sa', 'mo')
AND a IN (
  SELECT a
  FROM t1
  WHERE e IN ('sa', 'mo')
  GROUP BY a
  HAVING
    COUNT(*) = 2
    AND COUNT(DISTINCT e) = 2
    AND COUNT(DISTINCT f) = 2
)

字符串

相关问题