生成随机对 SQL

Generate random pairs SQL

假设我们有这两个表。

表 1:

|column_1 |    ...  |
--------------------
|   'a'   |    ...  |  
|   'b'   |    ...  |  
|   'c'   |    ...  |   
|   'd'   |    ...  |   
|   'e'   |    ...  | 

TABLE_2:

|column_1 |    ...  |
--------------------
|   1     |    ...  |  
|   2     |    ...  |  
|   3     |    ...  |   
|   4     |    ...  |   
|   5     |    ...  | 

我想将 TABLE_1 的所有行与 TABLE_2 中的一些随机列配对,其中每对将具有来自 TABLE_2 的随机数量的不同行(范围 1,2 ,3)

输出可能是:

|column_1 |    column_2  |
---------------------------
|   'a'   |    1         | 
|   'a'   |    2         | 
|   'a'   |    5         | 
|   'b'   |    5         | 
|   'c'   |    3         | 
|   'c'   |    4         | 
|   'd'   |    3         | 
|   'e'   |    3         | 
|   'e'   |    5         | 
|   'e'   |    1         | 
JOIN LATERAL

为我做了这件事。

SELECT *
FROM TABLE1
LEFT JOIN LATERAL(
SELECT * 
FROM TABLE2 LIMIT FLOOR(RANDOM() * 3 + 1)) a
    ON TRUE