The*_*ish 5 mysql sql select subquery row-number
这里,chapter_id可以是两个或两个以上.我需要以一种方式查询,每章都给出相等的输出.问题
即如果总问题是50,并且从5章开始,那么每章应该给出10个问题.
SELECT id, chapter_id, question, answer FROM `questions`
WHERE `chapter_id` IN (19, 20, 21, 22, 23)
ORDER BY `chapter_id`
Run Code Online (Sandbox Code Playgroud)
我通过查询单独的查询来尝试它.即首先检查章节的数量并通过数组循环.
<?php
$total_qsn = 50;
$chap[] = {19, 20, 21, 22, 23};
$avg = $total_qsn/count($chap);
for($i=0, $i<count($chap); i++){
$sql = "SELECT id, chapter_id, question, answer FROM `questions` WHERE chapter_id = {$chap[i]} LIMIT 0, {$avg}";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
// Print the array members
}
}
?>
Run Code Online (Sandbox Code Playgroud)
有没有办法,我只能通过一个查询完成整个事情!谢谢!请问任何想法!
试试这个:
SELECT id, chapter_id, question, answer
FROM (SELECT IF(@chapterId=@chapterId:=chapter_id, @id:=@id+1, @id:=0) queNo, id, chapter_id, question, answer
FROM `questions`, (SELECT @chapterId:=0, @id:=0) AS A
WHERE `chapter_id` IN (19, 20, 21, 22, 23)
ORDER BY `chapter_id`
) AS A
WHERE queNo < 10
Run Code Online (Sandbox Code Playgroud)