我不知道这是否是 SQL 功能......简而言之:我想要一个表中的行,在另一个表的数组/逗号分隔列表中找不到 id。更多信息如下:
设置是两个表;一个用户表和一个问题表。user-table 有一个名为 answersQuestions 的列,这是一个逗号分隔的列表,其中包含用户已回答的问题 ID。
我试图得到 4 个随机问题,每个问题都没有得到回答。
我如何通过 SQL 查询获得 4 个随机数
SELECT * FROM questions WHERE id >= RAND() * (SELECT MAX(id) FROM questions) LIMIT 4
但这只会返回 4 个随机问题,而不会考虑用户之前是否有过该问题。
如果我应该用 Javascript 来做,它看起来像这样
var questions = [1,2,3,4,5,6,7,8,9,10,11,12];
var answeredQuestions = [3,5,9,12];
var sqlReturn = [];
for (var i=0;i<4;i++) {
var randNo = 0;
while (randNo == 0 || sqlReturn.indexOf(randNo) > -1 || answeredQuestions.indexOf(randNo) > -1) {
randNo = Math.floor((Math.random()*questions.length)+1);
}
sqlReturn[i] = randNo;
}
document.write(sqlReturn);