MYSQL视图不填充空点以填充1000
下面的查询从过去两天提出的问题中获取热门问题。它查看一个提要表以了解最新讨论的内容,然后搜索一个标记表以查找其中哪一个最受欢迎 我只得到大约60个结果,这是伟大的,但我需要1000个结果。这意味着我需要用随机的问题填满剩下的部分 我的sql查询尝试这样做,但不会在视图的其余部分填充更多问题,这些问题不在提要表中MYSQL视图不填充空点以填充1000,mysql,sql,Mysql,Sql,下面的查询从过去两天提出的问题中获取热门问题。它查看一个提要表以了解最新讨论的内容,然后搜索一个标记表以查找其中哪一个最受欢迎 我只得到大约60个结果,这是伟大的,但我需要1000个结果。这意味着我需要用随机的问题填满剩下的部分 我的sql查询尝试这样做,但不会在视图的其余部分填充更多问题,这些问题不在提要表中 CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW `p
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
如果需要随机问题,请删除
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;
您可以分别搜索
2天
和其他
问题,然后UNION
结果和limit
输出。好吧,这不是对所有1000个问题都是随机的吗?我只需要在最初的60个问题之后返回random(因为我问题中的代码视图只有60个问题,所以在此之后我想再添加940个random)questions@waf-正如我已经说过的,有两个类似的查询,每个查询获取1000条记录。一个用于2天,另一个用于随机。创建额外的列(假设)1
表示2天,而0
表示随机。将两个查询合并。从这个新字段开始,用ORDER BY
对结果设置LIMIT 1000
,这样您的2天记录优先。