Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL选择这个和那个中的五个_Mysql_Sql_Select - Fatal编程技术网

Mysql SQL选择这个和那个中的五个

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)

有没有办法从汽车表中选择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)

由于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