這是有問題的查詢(具有意圖的含義:將與實體530配對的所有實體拉入新表,與對的計數):CREATE ... MySQL中的奇怪錯誤SELECT:錯誤1062(23000):鍵1的重複條目'0'
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
;
我解釋錯誤消息:
ERROR 1062 (23000): Duplicate entry '0' for key 1
爲我違反主鍵的唯一性投訴。不過,我是按那個值,應該保證唯一性吧?然後,我想試試這個:
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
;
令人驚訝的是,這工作沒有任何問題,儘管,根據我的理解,這兩個應該是等價的。
什麼給?!?
參考:
mysql Ver 14.12 Distrib 5.0.82sp1, for redhat-linux-gnu (x86_64) using readline 5.1
您獲得唯一的id值嗎?你能發佈一些示例數據嗎? – 2010-11-29 13:39:11