Mysql 从数据库中检索四个字段有两个值的行

Mysql 从数据库中检索四个字段有两个值的行,mysql,sql,left-join,Mysql,Sql,Left Join,我有一个名为results的表,其中有四个字段,每个字段都是名表的外键。姓名表包括此人的姓名、出生日期和性别。我需要编写一个查询,当两个人是男性,两个人是女性时,该查询将检索所有结果 结果表 个人1智力 个人2智力 个人3智力 个人4智力 名称表 个人识别码 名瓦查尔 姓氏varchar middlename varchar 生日 sex char首先,您可以去掉from子句中的所有括号。您没有使用MS Access,因此不要让您的查询看起来像是在使用它 其次,左连接s可以是内连接s。你需

我有一个名为results的表,其中有四个字段,每个字段都是名表的外键。姓名表包括此人的姓名、出生日期和性别。我需要编写一个查询,当两个人是男性,两个人是女性时,该查询将检索所有结果

结果表

  • 个人1智力
  • 个人2智力
  • 个人3智力
  • 个人4智力
名称表

  • 个人识别码
  • 名瓦查尔
  • 姓氏varchar
  • middlename varchar
  • 生日

  • sex char首先,您可以去掉
    from
    子句中的所有括号。您没有使用MS Access,因此不要让您的查询看起来像是在使用它

    其次,
    左连接
    s可以是
    内连接
    s。你需要一个匹配来获得性别,而这四个都是你所有条件所必需的

    第三,你只需要数一数男性和女性的数量。使用您的查询,这有点棘手,但是您可以通过一组详尽的
    以及
    比较来完成。或者使用复杂的
    案例
    逻辑。或者,使用字符串连接方法:

    where concat(p1.sex, p2.sex, p3.sex, p4.sex) in ('MMFF', 'MFMF', 'MFFM', 'FMMF', 'FMFM', 'FFMM')
    

    添加以下
    WHERE
    子句:

    WHERE (p1.sex = 'M' + p2.sex = 'M' + p3.sex = 'M' + p4.sex = 'M') = 2
    

    这就是我一开始要去的地方。我在想还有更优雅的东西,但有时需要蛮力:)这种问题通常是穷人的症状design@strawberry,结果表包含有四名参赛者的接力赛结果。我不确定这是怎么设计的,但我总是乐于接受建议。我喜欢这个。今晚我有时间用电脑时,我会试试看。
    WHERE (p1.sex = 'M' + p2.sex = 'M' + p3.sex = 'M' + p4.sex = 'M') = 2