用PHP生成一个随机的数据库插入


Generate a random DB insert with PHP

我有两个表如下所示:

表:矩阵

    matrix_id      round_id    p_1_1     p_1_2     p_2_1     p_2_2     p_3_1     p_3_2
    INT(11)        INT(11)    INT(11)   INT(11)   INT(11)   INT(11)   INT(11)   INT(11)
   AUTOINCREMENT

表:矩阵元素:

element_id       matrix
 INT(11)         INT(11)
AUTOINCREMENT

现在,我需要从表matrix_elementsINSERT中随机选择一个新行到表matrix中。这些p_1_1、p_1_2等中的每一个都必须用来自matrix_elements表的随机matrix来填充。

唯一的要求是,p_1_1等中的每两列都必须填充值:8

我完全迷路了,在你问之前我什么都没试过。我只是需要一些好的方向来实现这一点,而不一定是一个准备好的代码。

谢谢你的建议。

这需要多个语句来完成一行。。。我可能误解了你的要求,但现在是:

编辑:修改为一个语句,并实际与RAND() 一起使用

INSERT INTO matrix
SELECT
  NULL,
  1, -- NO idea what round_id should be...
  IF( 0 in (one8, two8), 8, (SELECT element_id 
                             FROM matrix_elements ORDER BY RAND() LIMIT 1)),
  IF( 1 in (one8, two8), 8, (SELECT element_id 
                             FROM matrix_elements ORDER BY RAND() LIMIT 1)),
  IF( 2 in (one8, two8), 8, (SELECT element_id 
                             FROM matrix_elements ORDER BY RAND() LIMIT 1)),
  IF( 3 in (one8, two8), 8, (SELECT element_id 
                             FROM matrix_elements ORDER BY RAND() LIMIT 1)),
  IF( 4 in (one8, two8), 8, (SELECT element_id 
                             FROM matrix_elements ORDER BY RAND() LIMIT 1)),
  IF( 5 in (one8, two8), 8, (SELECT element_id 
                             FROM matrix_elements ORDER BY RAND() LIMIT 1))
FROM (
  SELECT
    one8,
    IF( one8 = two8, two8 + 1, two8 ) as two8
    FROM (
      SELECT
        FLOOR(RAND() * 6) AS one8,
        FLOOR(RAND() * 5) AS two8
    ) AS a
) AS b;