Mysql SQL选择这个和那个中的五个
有没有办法从汽车表中选择10辆最新的汽车,其中5辆是红色的,5辆是蓝色的 我能想到的最好方法是两次选择和一次编程合并:Mysql SQL选择这个和那个中的五个,mysql,sql,select,Mysql,Sql,Select,有没有办法从汽车表中选择10辆最新的汽车,其中5辆是红色的,5辆是蓝色的 我能想到的最好方法是两次选择和一次编程合并: red = query("select * from cars where color = 'red' order by when desc limit 5") blue = query("select * from cars where color = 'blue' order by when desc limit 5") all = merge(red, blue)
red = query("select * from cars where color = 'red' order by when desc limit 5")
blue = query("select * from cars where color = 'blue' order by when desc limit 5")
all = merge(red, blue)
由于mysql不像其他RDBMS那样支持CTE和Window功能,所以可以在这个RDBMS上使用相关子查询
SELECT a.*
FROM Cars a
WHERE a.Color IN ('Red', 'Blue') AND
(
SELECT COUNT(*)
FROM Cars b
WHERE b.Color IN ('Red', 'Blue') AND
a.Color = b.Color AND
a.time >= b.time
) <= 5
POSTGRESQL
对于MySQL,请尝试:
select * from cars where color = 'blue' order by releasedate desc limit 5
Union
select * from cars where color = 'red' order by releasedate desc limit 5
您已经用MySQL和PostgreSQL对其进行了标记,您使用的是什么数据库?通过使用正确的RDBMS标记,您的问题可能会得到更适合回答它的人的注意。此问题没有显示任何研究成果。做家庭作业很重要。告诉我们你发现了什么,为什么它不能满足你的需要。这表明你花了时间来帮助自己,这使我们不必重复显而易见的答案,而且最重要的是,这有助于你得到更具体、更相关的答案。你的桌子结构如何?也许试试联合所有?@J W:有趣!如何用Postgres/Window解决这个问题?我正在考虑改用博士后学位。@forthrin请看我的最新答案。Col1、…、Col3只是示例列名。呵呵,这是一个和两个单独的选择一样昂贵的联合选择吗?我认为联合选择更好。下面是前面的一个问题,专门针对联合查询和单独查询之间的性能比较
select * from cars where color = 'blue' order by releasedate desc limit 5
Union
select * from cars where color = 'red' order by releasedate desc limit 5