MySQL连接,其中forgein Key=id1和forgein Key=id2
这个问题让我的大脑有点迟钝,我发现很难找到解决办法,因为我不能正确地表达这个问题来提供相关信息 我正试图从下表中获取fProduct记录,其中有一个fAttribute 2号和20号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
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很高兴我能帮上忙!!