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)
这种情况永远不会评估为真.我怎么做?
你可以用 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)