MySQL连接,其中forgein Key=id1和forgein Key=id2

MySQL连接,其中forgein Key=id1和forgein Key=id2,mysql,join,Mysql,Join,这个问题让我的大脑有点迟钝,我发现很难找到解决办法,因为我不能正确地表达这个问题来提供相关信息 我正试图从下表中获取fProduct记录,其中有一个fAttribute 2号和20号 id fAttribute fProduct 19 2 2967 48 2 2923 50 2 3008 51 20 3008 52 2 2295 53 20 2295

这个问题让我的大脑有点迟钝,我发现很难找到解决办法,因为我不能正确地表达这个问题来提供相关信息

我正试图从下表中获取fProduct记录,其中有一个fAttribute 2号和20号

id  fAttribute  fProduct
19      2        2967
48      2        2923
50      2        3008
51      20       3008
52      2        2295
53      20       2295
当我希望返回FPProduct的2295和3008时,我下面的陈述产生了0个结果

SELECT fProduct 
FROM  tableName 
WHERE fAttribute = 2 AND fAttribute = 20
GROUP BY fProduct

有人能帮忙吗?

您可以使用内部联接,也可以使用现有条件:

内部联接:

SELECT DISTINCT a.fProduct
FROM MyTable a
     INNER JOIN MyTable b ON a.fProduct = b.fProduct AND b.fAttribute = 2
     INNER JOIN MyTable c ON a.fProduct = c.fProduct AND c.fAttribute = 20
存在:

SELECT afproduct
FROM MyTable a
WHERE EXISTS (SELECT b.id FROM MyTable b WHERE a.fProduct = b.fProduct AND b.fAttribute = 2)
  AND EXISTS (SELECT c.id FROM MyTable c WHERE a.fProduct = c.fProduct AND c.fAttribute = 20)

可以使用内部联接,也可以使用现有条件:

内部联接:

SELECT DISTINCT a.fProduct
FROM MyTable a
     INNER JOIN MyTable b ON a.fProduct = b.fProduct AND b.fAttribute = 2
     INNER JOIN MyTable c ON a.fProduct = c.fProduct AND c.fAttribute = 20
存在:

SELECT afproduct
FROM MyTable a
WHERE EXISTS (SELECT b.id FROM MyTable b WHERE a.fProduct = b.fProduct AND b.fAttribute = 2)
  AND EXISTS (SELECT c.id FROM MyTable c WHERE a.fProduct = c.fProduct AND c.fAttribute = 20)
加入应有助于:

SELECT distinct a.fProduct 
FROM  tableName as a
join tableName as b on b.product = a.product
WHERE a.fAttribute = 2 and  b.fAttribute = 20
加入应有助于:

SELECT distinct a.fProduct 
FROM  tableName as a
join tableName as b on b.product = a.product
WHERE a.fAttribute = 2 and  b.fAttribute = 20

由于您已经通过将WHERE子句更改为OR或IN并添加HAVING COUNTfattribute=2来进行分组,从而确保它同时具有这两个属性

SELECT fproduct 
FROM   tablename 
WHERE  fattribute IN (2 , 20)
GROUP  BY fproduct 
HAVING COUNT(fattribute) = 2 

由于您已经通过将WHERE子句更改为OR或IN并添加HAVING COUNTfattribute=2来进行分组,从而确保它同时具有这两个属性

SELECT fproduct 
FROM   tablename 
WHERE  fattribute IN (2 , 20)
GROUP  BY fproduct 
HAVING COUNT(fattribute) = 2 

在where子句之前和中,You's missing=2在where子句之前和中,You's missing=2在where子句中,我最后使用了内部联接选项。干杯,老兄。@Theokouzeli很高兴我能帮上忙!!我最后使用了内部连接选项。干杯,老兄。@Theokouzeli很高兴我能帮上忙!!