gpt4 book ai didi

mysql - 用第二个随机行连接 MySQL 中的两个表

转载 作者:可可西里 更新时间:2023-11-01 08:37:42 25 4
gpt4 key购买 nike

我有两张 table

第一个只有5行

第二个有 800 行

我正在使用这个查询:

SELECT * 
FROM table1 t1
JOIN (SELECT * FROM table2 ORDER BY RAND() LIMIT 5) t2

但是对于第二个表的每个结果,我从第一个表中获取 5 行。

加入时我不需要条件,我只想要第二个表中的 5 个随机结果加入第一个表中的 5 个结果。

例子:

--------------------------------------------------------
|table1 (always with same order)| table2(random order) |
--------------------------------------------------------
item1 | item4
item2 | item2
item3 | item5
item4 | item1
item5 | item3

最佳答案

你是说 UNION 吗?

SELECT * FROM table1
UNION SELECT * FROM table2 ORDER BY RAND() LIMIT 5;

更新:修改问题后的修改答案:

SELECT field1 FROM table1
UNION SELECT field2 FROM table2 ORDER BY RAND() LIMIT 5;

据我了解,您只需要每个表中的一个字段。如果需要多个,可以列出它们:field2、field2、...,只要两个 SELECT 中的字段数相同即可。


更新 2:好的,我想我现在明白你的意思了。这是一种(肮脏的)方法,但我相信有人可以提供更优雅的解决方案:

SET @num1=0, @num2=0;

SELECT t1.field1, t2.field2
FROM (
SELECT field1, @num1:=@num1+1 AS num
FROM table1
) AS t1
INNER JOIN (
SELECT field2, @num2:=@num2+1 AS num
FROM (
SELECT field2
FROM table2
ORDER BY RAND()
LIMIT 5
) AS t
) AS t2
ON t1.num = t2.num;

关于mysql - 用第二个随机行连接 MySQL 中的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6251101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com