0

我有两个看起来像这样的表:

表:矩阵

    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_elements添加INSERT一个新行matrix。这些 p_1_1、p_1_2 等中的每一个都必须用表中的随机数matrix填充matrix_elements

唯一的要求是这些列 p_1_1 等中的每一列都必须填充以下值:8

我完全迷失了,在你问之前我没有尝试任何事情。我只是需要一些好的方向来实现这一点,而不是准备好的代码。

感谢您的任何建议。

4

1 回答 1

0

这需要多条语句才能完成一行......我可能误解了你的要求,但这里是:

编辑:修改为一个语句并实际使用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;
于 2013-07-17T17:24:28.360 回答