MySQL ORDER BY RAND()LIMIT并结合使用

时间:2017-10-14 10:54:14

标签: mysql random limit

我有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

1 个答案:

答案 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