选择10个随机行mysql

时间:2014-02-27 21:12:23

标签: php mysql random sql-order-by

我正在做一个小问答游戏,我想随机选择分为4个不同主题的10个问题,每个问题分为理论和实践问题

1)是否有任何不同的方式来选择随机而不是ORDER BY RAND( ) - 这种方式非常慢

2)如何更改减少查询只使用一个select

这就是我想要选择的内容

  • 1理论和1实践问题来自subjet'Conceitodeinventário'
  • 1理论和2个实践问题来自subjet'Mensuraçãodeinporeáriosnoreconhecimento'
  • 1个理论和2个实践问题来自subjet'Mensuraçãodeinporesáriosapósoreconhecimento'
  • 来自subjet'Desreconhecimentodeinventários'OR的理论问题 nome_assunto

这是我现在的查询,它运作良好:

  (
    SELECT questao_id, titulo_pergunta, abordagem, opcao1, opcao2, opcao3, opcao4, nome_tema, nome_assunto FROM quizz
    INNER JOIN tema ON tema_id = id_tema
    INNER JOIN assunto_quizz ON assunto_id = id_assunto
    WHERE nome_tema = 'IAS 2 Inventários' 
    AND nome_assunto = 'Conceito de inventário'
    AND abordagem = 'T'
    ORDER BY RAND( ) LIMIT 1
    )
    UNION
    (
    SELECT questao_id, titulo_pergunta, abordagem, opcao1, opcao2, opcao3, opcao4, nome_tema, nome_assunto FROM quizz
    INNER JOIN tema ON tema_id = id_tema
    INNER JOIN assunto_quizz ON assunto_id = id_assunto
    WHERE nome_tema = 'IAS 2 Inventários' 
    AND nome_assunto = 'Conceito de inventário'
    AND abordagem = 'P'
    ORDER BY RAND( ) LIMIT 1
    )
    UNION
    (
        SELECT questao_id, titulo_pergunta, abordagem, opcao1, opcao2, opcao3, opcao4, nome_tema, nome_assunto FROM quizz
        INNER JOIN tema ON tema_id = id_tema
        INNER JOIN assunto_quizz ON assunto_id = id_assunto
        WHERE nome_tema = 'IAS 2 Inventários' 
        AND nome_assunto = 'Mensuração de inventários no reconhecimento'
        AND abordagem = 'T'
       ORDER BY RAND( ) LIMIT 1
    ) 
    UNION
    (
        SELECT questao_id, titulo_pergunta, abordagem, opcao1, opcao2, opcao3, opcao4, nome_tema, nome_assunto FROM quizz
        INNER JOIN tema ON tema_id = id_tema
        INNER JOIN assunto_quizz ON assunto_id = id_assunto
        WHERE nome_tema = 'IAS 2 Inventários' 
        AND nome_assunto = 'Mensuração de inventários no reconhecimento'
        AND abordagem = 'P'
       ORDER BY RAND( ) LIMIT 2
    ) 
    UNION
    (
        SELECT questao_id, titulo_pergunta, abordagem, opcao1, opcao2, opcao3, opcao4, nome_tema, nome_assunto FROM quizz
        INNER JOIN tema ON tema_id = id_tema
        INNER JOIN assunto_quizz ON assunto_id = id_assunto
        WHERE nome_tema = 'IAS 2 Inventários' 
        AND nome_assunto = 'Mensuração de inventários após o reconhecimento'
        AND abordagem = 'T'
       ORDER BY RAND( ) LIMIT 1
    ) 
    UNION
    (
        SELECT questao_id, titulo_pergunta, abordagem, opcao1, opcao2, opcao3, opcao4, nome_tema, nome_assunto FROM quizz
        INNER JOIN tema ON tema_id = id_tema
        INNER JOIN assunto_quizz ON assunto_id = id_assunto
        WHERE nome_tema = 'IAS 2 Inventários' 
        AND nome_assunto = 'Mensuração de inventários após o reconhecimento'
        AND abordagem = 'P'
       ORDER BY RAND( ) LIMIT 2
    ) 
    UNION
    (
        SELECT questao_id, titulo_pergunta, abordagem, opcao1, opcao2, opcao3, opcao4, nome_tema, nome_assunto FROM quizz
        INNER JOIN tema ON tema_id = id_tema
        INNER JOIN assunto_quizz ON assunto_id = id_assunto
        WHERE nome_tema = 'IAS 2 Inventários' 
        AND nome_assunto = 'Desreconhecimento de inventários' OR nome_assunto = 'Divulgações sobre inventários'
        AND abordagem = 'T'
       ORDER BY RAND( ) LIMIT 2
    ) 

0 个答案:

没有答案