MySQL ORDER BY RAND()限制和组合
问题描述:
我有2个表(tmp1,tmp2)。每个表格都包含唯一的(产品)_id。我需要创建一个查询,以从表tmp2中为表tmp1中的每个ID获取一个固定的随机数的ID。我已经与GROUP_CONCAT尝试过,但得到的错误:MySQL ORDER BY RAND()限制和组合
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
答
了那里与功能
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
请参阅[我为什么要提供M CVE对于我来说似乎是一个非常简单的SQL查询](http://meta.*.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me -to-be-a-very-simple-sql-query) – Strawberry
这两个表之间是否有任何关系定义? –
你的连接条款在哪里? –