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