同一查询上有两个单独的连接

时间:2015-06-10 18:07:54

标签: mysql

我有一个查询来查找表中的重复项:

SELECT sofferenze.id_soff, sofferenze.Descrizione
FROM sofferenze
INNER JOIN (
SELECT Descrizione
FROM sofferenze
GROUP BY Descrizione
HAVING count( id ) >1
)dup ON sofferenze.Descrizione = dup.Descrizione
ORDER BY Descrizione ASC

它就像一个魅力,给了我所有重复的行。 我还有另一个从sofferenze.id_soff开始的查询将在另一个表中给我另一个值:

SELECT cod_fisc
FROM anagrafiche
JOIN `rischiatura` ON anagrafiche.id_ndg = rischiatura.id_ndg
WHERE id_ogg = 'SF000000012'
AND id_ruolo = 'RU010000002'

实际上,对第一个查询返回的每一行运行第二个查询,在第WHERE id_ogg='SF000000012'行中替换第一个查询返回的值为sofferenze.id_soff的值“{SF000000012”。

此代码效率不高,因为它运行第二次查询的几次。 有没有可以合并两个查询的选项?

1 个答案:

答案 0 :(得分:0)

为什么不将它组合成子查询?

SELECT cod_fisc
FROM anagrafiche
JOIN `rischiatura` ON anagrafiche.id_ndg = rischiatura.id_ndg
WHERE id_ogg IN (SELECT x.id_soff
    FROM sofferenze x
    WHERE x.Descrizione IN (
        SELECT ix.Descrizione
        FROM sofferenze ix
        GROUP BY ix.Descrizione
        HAVING count( * ) >1
    ))
AND id_ruolo = 'RU010000002'