根据其他表中的条目从表中选择

5 mysql

这是设置:

表A与表B有连接.表B中有多个条目(0到n),表A中可以有匹配的记录.

如果表B中存在一定数量的匹配记录,如何形成一个只从表A给出记录的查询?

例:

表A中有衣服.表B具有服装的属性.

表B有一个表A的外键,所以它看起来像这样:

id  fid_clothing1  attributeA
id  fid_clothing1  attributeB
id  fid_clothing1  attributeC
id  fid_clothing2  attributeA
id  fid_clothing2  attributeB
Run Code Online (Sandbox Code Playgroud)

现在,我只想要具有attributeAAND attributeBAND 属性的衣服attributeC.如果我进行OR查询,这不是问题,但我不能只做以下事情:

SELECT * from tableA
LEFT JOIN tableB on tableB.fid_cloting = tableA.id
WHERE attribute='A' AND attribute='B' AND attribute='C'
Run Code Online (Sandbox Code Playgroud)

这种情况永远不会评估为真.我怎么做?

pjp*_*pjp 2

你可以用 3 个内连接来做到这一点...即给我表 A 具有我想要的属性的行

SELECT A.id FROM tableA A
INNER JOIN tableB BA ON A.id = BA.fid_clothing AND BA.Attribute='A'
INNER JOIN tableB BB ON A.id = BB.fid_clothing AND BB.Attribute='B'
INNER JOIN tableB BC ON A.id = BC.fid_clothing AND BC.Attribute='C'
GROUP BY A.id
Run Code Online (Sandbox Code Playgroud)

  • 问题是它的概括性很差(如果你的衣服有 99 种属性怎么办)? (2认同)