MySQL ORDER BY RAND()限制和组合

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 
+0

请参阅[我为什么要提供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

+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 
+0

WOW!有用!我可以把钱放在里面的盒子在哪里?非常感谢你! –

+0

哈哈。没有金钱需要,打勾按钮将做;) – SEarle1986

+0

对不起,哪里是滴答按钮? –