使用RAND从一组n中选择一行

安德鲁布

我有2个表,一个是Venues,一个是Listingsone to many relationship from Venue to Listings

一些场馆付费以“特色”为特色,其结果比不付费的场馆具有更多的功能。很有可能说10个场馆中就有5个会成为特色。我不想显示5个精选和5个正常,而是2个精选和8个正常。显然,选择的2应该是动态的。

目前,我有这样的查询:(为简便起见,已删除了列数)

SELECT V.VenueName FROM Venues V 
INNER JOIN Listings L ON V.VenueID = L.FK_VenueID 
INNER JOIN Type T ON L.FK_ListingTypeID = T.TypeID 
WHERE V.Active = 1 AND L.Active = 1 AND T.TypeID = 1 AND T.Active = 1 AND V.Featured = 1 
AND HOUR(L.StartTime) <= 16 AND HOUR(L.EndTime) > 16 AND DATE(NOW()) >= DATE(L.StartDate) 
AND DATE(NOW()) <= DATE(L.EndDate) AND L.DayOfWeek LIKE '%Tuesday%' 
AND DATE(L.StartDate) <= '2015-01-14' AND DATE(L.EndDate) >= '2015-01-14'
UNION
SELECT V.VenueName FROM Venues V 
INNER JOIN Listings L ON V.VenueID = L.FK_VenueID 
INNER JOIN Type T ON L.FK_ListingTypeID = T.TypeID 
WHERE V.Active = 1 AND L.Active = 1 AND T.TypeID = 1 AND T.Active = 1 AND V.Featured = 0 
AND HOUR(L.StartTime) <= 16 AND HOUR(L.EndTime) > 16 AND DATE(NOW()) >= DATE(L.StartDate) 
AND DATE(NOW()) <= DATE(L.EndDate) AND L.DayOfWeek LIKE '%Tuesday%' 
AND DATE(L.StartDate) <= '2015-01-14' AND DATE(L.EndDate) >= '2015-01-14'

如您所见,除了中的查询,其他查询均相同Featured = 1/Featured = 0

我将如何将第一个查询(在联合上方)更改为dynamically pick 2 featured rows at random2是一个限制,如果表中只有一个匹配的行,则1是可以的。

斯里达(Sridhar DD)

您可能可以使用

SELECT VenueName from (
   SELECT V.VenueName FROM Venues V 
   INNER JOIN Listings L ON V.VenueID = L.FK_VenueID 
   INNER JOIN Type T ON L.FK_ListingTypeID = T.TypeID 
   WHERE V.Active = 1 AND L.Active = 1 AND T.TypeID = 1 AND T.Active = 1 AND V.Featured = 1  
   AND HOUR(L.StartTime) <= 16 AND HOUR(L.EndTime) > 16 AND DATE(NOW()) >= DATE(L.StartDate) 
   AND DATE(NOW()) <= DATE(L.EndDate) AND L.DayOfWeek LIKE '%Tuesday%' 
   AND DATE(L.StartDate) <= '2015-01-14' AND DATE(L.EndDate) >= '2015-01-14'
   ORDER BY RAND() LIMIT 2.) a
UNION
SELECT VenueName from (
   SELECT V.VenueName FROM Venues V 
   INNER JOIN Listings L ON V.VenueID = L.FK_VenueID 
   INNER JOIN Type T ON L.FK_ListingTypeID = T.TypeID 
   WHERE V.Active = 1 AND L.Active = 1 AND T.TypeID = 1 AND T.Active = 1 AND V.Featured = 0 
   AND HOUR(L.StartTime) <= 16 AND HOUR(L.EndTime) > 16 AND DATE(NOW()) >= DATE(L.StartDate) 
   AND DATE(NOW()) <= DATE(L.EndDate) AND L.DayOfWeek LIKE '%Tuesday%' 
   AND DATE(L.StartDate) <= '2015-01-14' AND DATE(L.EndDate) >= '2015-01-14') b

参考:与Rand()的并集

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在另一列内的一组行中选择列的第一行

来自分类Dev

从一组条目中选择一个不同的行

来自分类Dev

我如何使用python从一组点中选择等距的点

来自分类Dev

将行转置为列,但我只是从一组数据中选择需要转置的元素

来自分类Dev

从对象列表中选择一组n个对象

来自分类Dev

MySQL从一行中选择数据

来自分类Dev

从一行中的不同行中选择值

来自分类Dev

从一组加权类别/属性中选择唯一成员

来自分类Dev

从一行中选择前n个元素并取均值

来自分类Dev

从上一组中选择最大

来自分类Dev

在每个GROUP BY组中选择第一行

来自分类Dev

Hive - 从包含至少一行的组中选择数据

来自分类Dev

根据排列数组从一组数组中选择值

来自分类Dev

从一组数字中选择随机数而无需重复

来自分类Dev

从一组远程目录中选择性复制

来自分类Dev

Java正则表达式:从一组字符中选择

来自分类Dev

从一组中选择列中的最小值

来自分类Dev

根据排列数组从一组数组中选择值

来自分类Dev

使用Big Query按计数从组中选择第一行

来自分类Dev

使用Big Query按计数从组中选择第一行

来自分类Dev

从一个表中获取一组ID,并使用它们在另一张表中生成一行

来自分类Dev

如何从一系列链接行中选择最后一行

来自分类Dev

如何使用mysql中的连接从一个表中选择一行并从其他表中选择多行,

来自分类Dev

[SQL]从一行中选择同一日期

来自分类Dev

从一张表中选择:单行子查询返回多于一行

来自分类常见问题

如何从SQL中的一组行中选择特定行

来自分类Dev

如何从SQL中的一组行中选择特定行

来自分类Dev

在正则表达式中选择标题行下的一组行

来自分类Dev

多次选择一组行

Related 相关文章

热门标签

归档