com base no que entendi fiz o seguinte exemplo. Criei uma tabela temporária em memória para armazenar os dados do exemplo. CREATE TEMPORARY TABLE tab_xid(
xid INT,
num INT,
tipo CHAR(1)
)ENGINE MEMORY;
Carreguei os dadosINSERT INTO tab_xid(xid,num,tipo)
VALUES(5,5, 'L'),(3, 8, 'S'),(1, 4, 'C'),(1, 5, 'D'),(7, 5, 'C'),(9, 3, 'C'),(8, 3, 'D');
Separei em uma consulta somente os dados em XID que tivessem apenas uma ocorrencia
SELECT xid
FROM tab_xid
GROUP BY xid
HAVING COUNT(xid)=1;
Criei a consulta para que selecionasse os dados que tem o tipo "D"
SELECT x1.xid, x1.num, x1.tipo
FROM tab_xid x1
WHERE x1.tipo = 'D' AND x1.xid IN (SELECT x2.xid
FROM tab_xid x2
GROUP BY x2.xid
HAVING COUNT(x2.xid) = 1
); Obrigado pelo exemplo. Falta apenas um pormenor. Na tabela real, podem existir mais do XID com valor D. O coódigo em anexo apenas responde se houver apenas uma. Segue o exemplo abaixo. Tabela XID | NUM | TIPO 5 5 L 3 8 S 1 4 C 1 5 D 7 5 C 8 3 D 8 5 D 1 8 F 8 9 D O que preciso pegar é apenas o XID - 8. Porque tem D, sem apresentar outros valores. Independentemente do numero de ocorrências, o que preciso de pegar é o XID que apenas tem o Tipo D. Mais uma vez, Obrigado Denis Courcy.