Domanda

Se il mio titolo fa male la testa ... Sono con te. Non voglio entrare in questa tabella perché esiste se non che è parte di un sistema legacy, anche il sistema fa "l'accesso livello record" (RLA) e questo so che sarà un problema per molte tabelle, in ogni modo il RLA è riportato, in quanto l'aggiunta di una colonna cambierà il formato di tabella e poi molti molto vecchi programmi non funzionerà più ...

A quanto pare l'aggiunta di un PK ha dimostrato di non cambiare il formato tabella. Così mi è stato detto che un certo insieme di chiavi è garantito per essere unico, così che ne sai ... non lo è. E ora ho bisogno di mostrare dove non lo sono.

tutto quello che posso pensare è:

Ottenere il prodotto incrociato in cui le partite tavolo su di essa la chiave primaria.

In qualche modo ottenere una colonna conteggio sul set di risultati per il numero di voci in cui il PK corrisponde è di per sé.

Filtro che set di risultati per i valori in cui maggiore valore id di 2.

Vado a vedere se mi espando PK sufficientemente sarò effettivamente trovare qualcosa di unico.

È stato utile?

Soluzione

rimuovere i vincoli / indici univoci, inserire i dati, e quindi eseguire la query:

SELECT col1, col2, ..., coln, COUNT(*)
FROM your_table
GROUP BY col1, col2, ..., coln
HAVING COUNT(*) > 1

dove col1, col2, ..., coln è l'elenco delle colonne nella vostra chiave (una o più colonne). Il risultato sarà la lista delle chiavi che si verificano più di una volta insieme ad un conteggio che mostra quanto spesso si verificano.

Altri suggerimenti

select col1, ... from tab group by col1, ... having count(*)>1;
SELECT * FROM (SELECT ID, COUNT(*) CNT FROM MY_TABLE GROUP BY ID) WHERE CNT > 1
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top