我有一个查询来查找表中的重复项:
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”。
此代码效率不高,因为它运行第二次查询的几次。 有没有可以合并两个查询的选项?
答案 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'