2011-07-12 66 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

相关问题