具有多联盟的重复条目

时间:2011-09-06 22:52:42

标签: mysql union distinct

我有这个

               (SELECT  DISTINCT '1' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana da'    AND tipo <> '7') 
UNION DISTINCT (SELECT  DISTINCT '2' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE sobrenome     REGEXP 'da silva dias'  AND tipo <> '7') 
UNION DISTINCT (SELECT  DISTINCT '3' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana'       AND sobrenome      REGEXP 'da silva dias'   AND tipo <> '7') 
UNION DISTINCT (SELECT  DISTINCT '4' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana da'    AND sobrenome      REGEXP 'silva dias'      AND tipo <> '7') 
UNION DISTINCT (SELECT  DISTINCT '5' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE sobrenome     REGEXP 'silva dias'     AND tipo <> '7') 
UNION DISTINCT (SELECT  DISTINCT '6' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana'       AND tipo <> '7') 
UNION DISTINCT (SELECT  DISTINCT '7' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana'       AND tipo <> '7') 
UNION DISTINCT (SELECT  DISTINCT '8' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE sobrenome     REGEXP 'leidiana'       AND tipo <> '7') 
UNION DISTINCT (SELECT  DISTINCT '9' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE sobrenome     REGEXP 'leidiana da'    AND tipo <> '7')   ORDER BY sb

结果:

2 - leidiana da silva dias 3 - leidiana da silva dias 4 - leidiana da silva dias 5 - leidiana da silva dias 6 - leidiana da silva dias

7 - leidiana da silva dias

正如你所看到的,我试图解决问题并最终将所有内容都分开。 RS

1 个答案:

答案 0 :(得分:1)

您正在强制各个联盟的结果与第一列(sb)不同。您可以使用外部GROUP BY来解决问题:

SELECT min(sb) AS sb, name, id,sobrenome,nasc,genero,escol
FROM (
      (SELECT  '1' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana da'    AND tipo <> '7') 
UNION (SELECT  '2' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE sobrenome     REGEXP 'da silva dias'  AND tipo <> '7') 
UNION (SELECT  '3' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana'       AND sobrenome      REGEXP 'da silva dias'   AND tipo <> '7') 
UNION (SELECT  '4' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana da'    AND sobrenome      REGEXP 'silva dias'      AND tipo <> '7') 
UNION (SELECT  '5' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE sobrenome     REGEXP 'silva dias'     AND tipo <> '7') 
UNION (SELECT  '6' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana'       AND tipo <> '7') 
UNION (SELECT  '7' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE nome          REGEXP 'leidiana'       AND tipo <> '7') 
UNION (SELECT  '8' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE sobrenome     REGEXP 'leidiana'       AND tipo <> '7') 
UNION (SELECT  '9' as sb,nome,id,sobrenome,nasc,genero,escol FROM usuarios WHERE sobrenome     REGEXP 'leidiana da'    AND tipo <> '7')) sbs
GROUP BY name, id,sobrenome,nasc,genero,escol
ORDER BY sb