【问题标题】:query to update record with another random record from another table?查询用另一个表中的另一个随机记录更新记录?
【发布时间】:2011-07-12 21:41:29
【问题描述】:

我在这个查询中遇到了一个小问题

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

当它的值为“0”时,此查询会更新收益表中的用户 ID 我需要做的是更新在用户表中找不到的用户ID 例如 收益表有 5 个条目,其中 userid=10 在用户表中找不到用户 ID 10,并且用户表具有这些 ID (1'2'3'4'5) 然后用用户表中找到的任何 id 更新这个值为 10 的用户 ID,并且 installid 不为空

【问题讨论】:

  • 呃,如果没有找到ID,你用随机ID填充它?这不会违反任何数量的完整性规则和理智的传统定义吗?或者这只是一个学术项目?另外,您需要每个 ID 都是随机的还是只随机选择一个 ID?
  • 不,它不是学术项目 :) 它是客户要求 :)
  • 另外,您需要每个 ID 都是随机的还是只随机选择一个 ID?我希望每个 ID 都是随机的,而不仅仅是一个随机选择的 ID
  • 这看起来有点奇怪,你想达到什么目的?也许您可以添加另一个子查询 WHERE userid not in (select userid from users)

标签: php mysql


【解决方案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 比完全没有这些行更好的解决方案。如果 ID 不重要,为什么还要拥有它们?

【讨论】:

  • 更新收益 SET userid = (SELECT ID FROM users WHERE installid is NOT NULL ORDER BY rand() LIMIT 1) WHERE userid not in (select ID from users) 刚刚做了谢谢 :)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
相关资源
最近更新 更多