我有2个表(tmp1,tmp2)。每个表只包含唯一(产品)_id。我需要创建一个查询,从表tmp1中获取表tmp1中每个ID的固定和随机数量的ID。我用GROUP_CONCAT尝试过,但得到了错误:
SELECT p.products_id,
GROUP_CONCAT((SELECT tmp2.products_id FROM tmp2 tmp2 ORDER BY RAND() LIMIT 12))
FROM tmp1 tmp1
GROUP BY tmp1.products_id
LIMIT 1
“子查询返回多个记录”
这就是我需要的结果。
示例:
ID tmp1 | ID tmp2
1 | 103,204,867,547,354,514,541
2 | 542,245,876,542,681,248,428
答案 0 :(得分:0)
在函数的帮助下最终到达那里
DELIMITER $$
CREATE FUNCTION randomness() RETURNS VARCHAR(10000)
NOT DETERMINISTIC
BEGIN
DECLARE randomnum VARCHAR(500);
SELECT GROUP_CONCAT(ID)
INTO randomnum
FROM (
SELECT ID
FROM tmp2
ORDER BY RAND()
LIMIT 12
) a;
RETURN randomnum;
END $$
DELIMITER ;
SELECT *,
(SELECT randomness())
FROM tmp1
根据您在下面的上一条评论,可以将结果添加到新表中,如下所示:
CREATE TABLE tmp3
(
ID INT,
RandomNums VARCHAR(255)
)
INSERT INTO tmp3
SELECT *,
(SELECT randomness())
FROM tmp1