SQL查询,随机选择2个表

时间:2011-01-07 15:36:27

标签: sql mysql random

大家好,我有一个问题,我只能像我一样工作......

我想要显示新闻和评论(2个表),我想要随机输出而不是相同的输出

这是我的查询我真的希望有人可以解释我做错了什么

SELECT
                anmeldelser.billed_sti ,
                anmeldelser.overskrift ,
                anmeldelser.indhold ,
                anmeldelser.id ,
                anmeldelser.godkendt
            FROM
                anmeldelser
            LIMIT 0,6
            UNION ALL
            SELECT
                nyheder.id ,
                nyheder.billed_sti ,
                nyheder.overskrift ,
                nyheder.indhold ,
                nyheder.godkendt
            FROM nyheder
            ORDER BY rand() LIMIT 0,6

3 个答案:

答案 0 :(得分:0)

首先,看起来两个SELECT语句的列顺序与UNION所需的列顺序不匹配。

以下是什么回报?

        SELECT
            anmeldelser.billed_sti ,
            anmeldelser.overskrift ,
            anmeldelser.indhold ,
            anmeldelser.id ,
            anmeldelser.godkendt
        FROM
            anmeldelser
        LIMIT 0,6
        UNION ALL
        SELECT
            nyheder.billed_sti ,
            nyheder.overskrift ,
            nyheder.indhold ,
            nyheder.id ,
            nyheder.godkendt
        FROM nyheder
        ORDER BY rand() LIMIT 0,6

(您使用的是哪个RDBMS?您拥有的SQL对Sybase无效,但可能会有一些技术取决于您使用的SQL的'风味')

答案 1 :(得分:0)

问题是第一个表没有选择随机元素

SELECT temp.* FROM
(
  SELECT
    anmeldelser.id ,
    anmeldelser.billed_sti ,
    anmeldelser.overskrift ,
    anmeldelser.indhold ,
    anmeldelser.godkendt,
    'News' as artType
  FROM anmeldelser
  UNION 
  SELECT
    nyheder.id ,
    nyheder.billed_sti ,
    nyheder.overskrift ,
    nyheder.indhold ,
    nyheder.godkendt,
    'Review' as artType
  FROM nyheder
 ) temp
 ORDER BY rand() LIMIT 0,6

答案 2 :(得分:0)

由于RAND()仅出现在ORDER BY子句中,它不仅会为整个查询评估一次,而且每行不会评估一次吗?