2012-11-20 79 views
0

我有一張表,其中包含一個值,我希望定期使用cron作業進行更新。但是,我需要通過將值替換爲不同表中的值來更新值。問題是我希望隨機選擇替換值。SQL查詢通過隨機選擇另一個表中的值來替換一個表中的值

例如,表1具有

ID Email 
================= 
1  bobatumail 

表2具有:

ID Email 
================ 
1  bobatumail 
2  joeatumail 
3  peteatumail 
4  biffatumail 
5  wilneratumail 
6  wilsonatumail 

我想查詢表2中,只要使用任何其他值,以取代在表1中bobatumail因爲它是隨機的。它甚至可以與表1中的值相同。

任何想法如何做到這一點?

+0

爲什麼你有2個結構相同的表?什麼是大局?你想在這裏做什麼? – 2012-11-20 20:41:55

+0

結構不完全相同。爲簡單起見,我只是簡化它...表1中的用戶會收到特別的好處,並且我希望表2中的其他用戶有機會隨着時間的推移獲得相同的好處。如果他們被放置在表1中,他們只能獲得收益。表1是一個單行表。 – user1818333

+0

隨機值是否始終從表2中的同一列中選取? – Onite

回答

0

在MySQL中,你可以使用REPLACE語句:

REPLACE INTO table1 (ID, Email) 
SELECT 1, table2.Email FROM table2 ORDER BY RAND() LIMIT 1; 

在第二行中的「1」代表條目的ID,而第二部分返回一個隨機值從表2中。是的,有解決方案使用UPDATE語句(JOIN和ANSI),但它總是很棘手,您通常必須關閉安全更新模式。

http://dev.mysql.com/doc/refman/5.5/en/mysql-command-options.html#option_mysql_safe-updates

請注意,REPLACE首先刪除舊的條目,然後重新插入新的。

http://dev.mysql.com/doc/refman/5.5/en/replace.html

+0

選擇1是表1中條目的ID?我使用了語法,但是在字段列表中收到未知的列錯誤(對於語法的選擇1部分)... – user1818333

+0

也許列名拼寫錯誤:將'ID'替換爲'ID'和'email'電子郵件'。我在聲明中糾正了它。 – Rudi

+0

是的,1是table1中條目的ID。 – Rudi

相關問題