我有两个表如下所示:
表:矩阵
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_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;