2011-07-12 68 views
0

IM有這個查詢查詢使用另一個表中的另一個隨機記錄更新記錄?

$update = mysql_query("UPDATE earnings SET userid = (SELECT ID FROM users WHERE installid is NOT NULL ORDER BY rand() LIMIT 1) WHERE userid='0'"); 

此查詢內的一個小問題的問題更新收益表中的用戶ID時,它的「0」 價值是什麼,我需要做的是更新的用戶ID,其中它不是在用戶表中找到 例如 收入表有5個條目,其中userid = 10 在用戶表中找不到用戶ID10,並且用戶表具有這些ID(1'2'3'4'5) 然後更新此用戶標識與用戶表中找到的任何id具有值10並且具有installid的用戶標識未被清除

+0

呃,如果沒有找到ID,你用隨機ID填充它?這不會違反任何數量的完整性規則和傳統的理智定義嗎?或者這只是一個學術項目?另外,您是否需要每個ID都是隨機的或只是一個隨機選擇的ID? – Naltharial

+0

不是它的非學術項目:)其客戶請求:) – Marco

+0

另外,你需要每個ID是隨機的還是隨機選擇一個ID?我希望每個ID都是隨機的,不僅隨機選擇一個ID – Marco

回答

1

我想象一個客戶會希望他們的收益數據是相關的,而不是完全隨機的(如果某些數據是隨機的,並且您不知道哪些數據是損壞的) 。這就是說,當你想與

UPDATE earnings SET userid = (SELECT ID FROM users WHERE installid is NOT NULL ORDER BY rand() LIMIT 1) WHERE userid NOT IN (SELECT ID FROM users) 

我會做,而不是被放在ID外鍵和防止被寫入隨機數據擺在首位的查詢獲取你。我不能看到一個解決方案,隨機ID會比根本沒有這些行更好。如果身份證不重要,爲什麼要這樣做?

+0

更新收益SET userid =(SELECT ID FROM users WHERE installid NOT NOT ORDER BY rand()LIMIT 1)WHERE userid not in(select ID from users) 只是做了謝謝:) – Marco

相關問題