MySQL ORDER BY RAND() LIMIT 并合并
MySQL ORDER BY RAND() LIMIT and combine
我有 2 个 tables (tmp1,tmp2)。每个 table 仅包含唯一的 (product)_id。我需要创建一个查询,以便为来自 table tmp1 的每个 ID 从 table tmp2 获取固定数量和随机数的 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
"subquery returned more than one record"
这就是我需要的结果。
示例:
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
根据您在下面的最后一条评论,可以将结果添加到新的 table 中,如下所示:
CREATE TABLE tmp3
(
ID INT,
RandomNums VARCHAR(255)
)
INSERT INTO tmp3
SELECT *,
(SELECT randomness())
FROM tmp1
我有 2 个 tables (tmp1,tmp2)。每个 table 仅包含唯一的 (product)_id。我需要创建一个查询,以便为来自 table tmp1 的每个 ID 从 table tmp2 获取固定数量和随机数的 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
"subquery returned more than one record"
这就是我需要的结果。
示例:
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
根据您在下面的最后一条评论,可以将结果添加到新的 table 中,如下所示:
CREATE TABLE tmp3
(
ID INT,
RandomNums VARCHAR(255)
)
INSERT INTO tmp3
SELECT *,
(SELECT randomness())
FROM tmp1