-3

car テーブルから 10 台の最新の車を取得する単一の選択を行う方法はありますか?そのうちの 5 台は赤で、5 台は青です?

私が思いつくことができる最善の方法は、2 つの選択とプログラムによるマージです。

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)
4

2 に答える 2

2

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
于 2013-03-31T14:27:13.577 に答える
0

mysql はサポートしていないため、他の RDBMSCTEと同様に、相関サブクエリを使用できます。Window Function

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

WITH carList
AS
(
    SELECT  Col1, Col2, Col3, Color,
            ROW_NUMBER() OVER (PARTITION BY Color ORDER BY time DESC) rn
    FROM    tableName
)
SELECT  Col1, Col2, Col3, Color
FROM    carList
WHERE   Color IN ('Red', 'Blue') AND
        RN <= 5
于 2013-03-31T14:20:27.543 に答える