Dies ist die problematische Abfrage (mit der beabsichtigten Bedeutung: ziehen Sie alle Entitäten gepaart mit Entity 530 in eine neue Tabelle, mit der Zählung der Paare):MySQL seltsamer Fehler in CREATE ... SELECT: Fehler 1062 (23000): Doppelter Eintrag '0' für Schlüssel 1
CREATE TEMPORARY TABLE paired (
entity_id INTEGER PRIMARY KEY,
numrels INTEGER
)
SELECT I.entity2_id, COUNT(I.relation_id) AS numrels
FROM pairs I
WHERE I.entity1_id = 530 AND I.entity2_id IS NOT NULL
GROUP BY I.entity2_id
;
interpretiere ich die Fehlermeldung:
ERROR 1062 (23000): Duplicate entry '0' for key 1
als Beschwerde, die ich Primärschlüssel der Einzigartigkeit bin zu verletzen. Allerdings bin ich Gruppierung von diesem Wert, der die Einzigartigkeit sicherstellen sollte, oder? Dann dachte ich, dies zu versuchen:
CREATE TEMPORARY TABLE paired (
entity_id INTEGER PRIMARY KEY,
numrels INTEGER
)
;
INSERT INTO paired
SELECT I.entity2_id, COUNT(I.relation_id) AS numrels
FROM pairs I
WHERE I.entity1_id = 530 AND I.entity2_id IS NOT NULL
GROUP BY I.entity2_id
;
Erstaunlicherweise dies ohne Probleme funktioniert, obwohl, nach meinem Verständnis soll die zwei gleichwertig sein.
Was gibt?!?
Zum Vergleich:
mysql Ver 14.12 Distrib 5.0.82sp1, for redhat-linux-gnu (x86_64) using readline 5.1
Sind die ID-Werte, die Sie erhalten, einzigartig? Können Sie einige Beispieldaten posten? –