我試圖從我們的所有數據庫表中爲我正在Web服務器上運行的腳本獲取電子郵件。不幸的是,在一些表格中有一些重複的電子郵件。這應該是一個簡單的解決方案,使用SELECT DISTINCT,INSERT IGNORE等,但似乎沒有任何工作。MySQL - 唯一且不同的值不起作用
這是我當前的查詢:
CREATE TEMPORARY TABLE `all_emails` (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
email VARCHAR(80) NOT NULL,
ip_address VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX(email)
);
INSERT IGNORE INTO `all_emails` (email, ip_address)
SELECT email,IP_address
FROM `table_1_emails`
WHERE unsubscribed_at IS NULL;
INSERT IGNORE INTO `all_emails` (email, ip_address)
SELECT email,ip_address
FROM `table_2_emails`
WHERE unsubscribed_at IS NULL;
INSERT IGNORE INTO all_emails (email, ip_address)
SELECT email,ip_address
FROM `table_3_emails`;
INSERT IGNORE INTO `all_emails` (email, ip_address)
SELECT email,ip_address
FROM `table_4_emails`;
SELECT DISTINCT email, ip_address, id FROM `all_emails`;
這仍然產生重複的電子郵件。
對於'INSERT IGNORE'爲你準備的工作,你首先需要的是防止重複一個獨特的密鑰。 –
在'email,ip_address,id'上創建一個唯一索引。 –
@GordonLinoff,爲了防止重複的內容,可能是一個唯一的索引只是'email'和'ip_address'? –