0

以下查询从过去 2 天提出的问题中获取热门问题。它查看提要表以查看最新讨论的内容,然后搜索标签表以查找其中哪个受欢迎。

我只得到大约 60 个结果,这很好,但我需要 1000 个结果。这意味着我需要用随机问题填写其余部分。

我的 sql 查询尝试执行此操作,但不会在视图的其余部分填充不在提要表中的更多问题。

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`%` 
    SQL SECURITY DEFINER
VIEW `popular` AS
    select 
        `q`.`name` AS `name`,
        `q`.`questionUrl` AS `questionUrl`,
        `q`.`miRating` AS `miRating`,
        `q`.`imageUrl` AS `imageUrl`,
        `q`.`foundOn` AS `foundOn`,
        `q`.`myId` AS `myId`
    from
        (`question` `q`
        join `feed` `f` ON ((`q`.`myId` = `f`.`question_id`))

        join `tag` `t` ON ((`q`.`myId` = `t`.`question_id`)))

    where
        (`t`.`name` like '%popular%')
    group by `q`.`name`
    order by (max(`f`.`timeStamp`) >= (now() - interval 1 day)) desc , (`q`.`myId` is not null) desc
    limit 0 , 1000comment
4

1 回答 1

1

如果您需要随机问题,请删除该where子句并将逻辑移至order by

select 
    `q`.`name` AS `name`,
    `q`.`questionUrl` AS `questionUrl`,
    `q`.`miRating` AS `miRating`,
    `q`.`imageUrl` AS `imageUrl`,
    `q`.`foundOn` AS `foundOn`,
    `q`.`myId` AS `myId`
from
    (`question` `q`
    join `feed` `f` ON ((`q`.`myId` = `f`.`question_id`))
    join `tag` `t` ON ((`q`.`myId` = `t`.`question_id`)))
group by `q`.`name`
order by (max(`f`.`timeStamp`) >= (now() - interval 1 day)) desc ,
         max(`t`.`name` like '%popular%') desc,
         rand()
limit 0 , 1000;
于 2013-09-15T20:19:12.100 回答