2017-10-14 12 views
0

私は2つのテーブル(tmp1、tmp2)を持っています。すべてのテーブルには、固有の(製品)_idのみが含まれています。私は、テーブルtmp1の各IDに対してテーブルtmp2からIDの固定された乱数を得るためにクエリを作成する必要があります。私はGROUP_CONCATでそれを試してみたが、の取得エラー:MySQL ORDER BY RAND()LIMIT and combine

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非常に単純なSQLクエリであるように私に思えるCVE](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me -to-be-be-a-very-simple-sql-query) – Strawberry

+0

これらの2つのテーブルの間に関係は定義されていますか? –

+0

あなたのjoin句はどこですか? –

答えて

0

が機能以下のあなたの最後のコメントを1として

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

申し訳ありませんが、ティックボタンはどこですか? –