2017-10-14 97 views
0

我有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.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me -to-be-a-very-simple-sql-query) – Strawberry

+0

這兩個表之間是否有任何關係定義? –

+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

對不起,哪裏是滴答按鈕? –