2014-05-10 148 views
1

我有一個數據庫表,它記錄了每個user_id使用哪個site_id。每當我保存設置時,我都會收到重複的內容。我想要它,所以我可以查詢表user_id = 99,並查看哪個site_id與該user_id關聯。重複插入記錄

SQL:

$sql = "INSERT INTO user_sites (rooftop_id, site_id, created_at, active) 
       VALUES ('$rooftop_id','$key', now(), '$value') 
       ON DUPLICATE KEY 
       UPDATE updated_at = IF(active=VALUES(active),updated_at,NOW()), 
       active = VALUES(active) 
       "; 

電流輸出:

+----+---------+---------+--------+ 
| id | user_id | site_id | active | 
+----+---------+---------+--------+ 
| 1 |  99 |  30 |  1 | 
| 2 |  99 |  20 |  1 | 
| 3 |  99 |  40 |  1 | 
| 4 |  32 |  30 |  1 | 
| 5 |  32 |  20 |  1 | 
| 6 |  32 |  40 |  1 | 
| 7 |  32 |  30 |  0 | 
| 8 |  32 |  20 |  0 | 
| 9 |  32 |  40 |  0 | 
+----+---------+---------+--------+ 

所需的輸出:

+----+---------+---------+--------+ 
| id | user_id | site_id | active | 
+----+---------+---------+--------+ 
| 1 |  99 |  30 |  1 | 
| 2 |  99 |  20 |  1 | 
| 3 |  99 |  40 |  1 | 
| 4 |  32 |  30 |  0 | 
| 5 |  32 |  20 |  0 | 
| 6 |  32 |  40 |  0 | 
+----+---------+---------+--------+ 

回答

1

你有沒有定義的表的唯一關鍵?對於你想要的,我認爲它是:

create unique index admin_sites_userid_siteid on admin_sites(user_id, site_id); 

然後這用於定義插入匹配現有行的時間。

+0

謝謝,這工作完美。 – 626