mysql - 按具有相同 ID 的 rand() 排序

标签 mysql random

大家好,我正在寻求一些查询方面的帮助。 我有2张 table

table

我需要从一个问题中随机获得所有答案。通过查询

Select * From questions,answers WHERE questions.id = answers.iddomanda

结果是完美的,但如果我使用 order by rand,这就是结果。

table2

有没有办法随机得到问题和随机答案? 有点像

id iddomanda question         answer 
4  4         Come va ?        bene
4  4         Come va ?        male
1  1         Come ti chiami ? Michele
1  1         Come ti chiami ? Carlo
2  2         Di dove sei?     San Salvo 
2  2         Di dove sei ?    Vasto 
3  3         Dove vai ?       Lontano 
3  3         Dove vai ?       Lontanissimo 
3  3         Dove vai ?       In giro 
3  3         Dove vai ?       Di la

谢谢帮助

最佳答案

您需要做的就是将问题 ID 随机化,然后像这样加入您的答案。

SELECT t.id, t1.iddomanda, t.question, t1.answer 
FROM
(   SELECT id, domanda as question
    FROM questions 
    ORDER BY RAND()
) t
LEFT JOIN 
(   SELECT iddomanda, risposta as answer
    FROM answers
) t1 on t1.iddomanda = t.id;

这个查询的好处是你非常简约。问题表将比答案表小得多,所以你只需要随机化一个表和那个较小的表......然后什么时候你加入它会将他们加入到已经随机化的表格中!

DEMO

关于mysql - 按具有相同 ID 的 rand() 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25385624/

相关文章:

php - while 循环内查询

java - 具有某些种子的随机似乎仍然是随机的

c++ - 不同计算机之间的 C++ <随机> 行为不一致

python - 3d 随机采样

php - 使用 PHP 生成随机数据库插入

algorithm - 用于迭代随机非重复序列的生成器

mysql - 当 table1 结果不匹配时连接 table2

php - 只进行一次查询并将其存储在数组中或每次都进行查询是否更有效?

mysql - 通过匹配两个表来删除条目

mysql - 合并两个 MySQL 表