我有一張桌子,汽車,
CarID | Car
1 Taurus
2 Ranger
3 Charger
和 CarColors,每輛車都有顏色。
ColorID | CarID | Color
1 1 White
2 1 Blue
3 2 Black
4 1 Red
5 2 Pink
6 3 Orange
我想隨機獲得兩輛汽車,以及這些汽車的所有顏色。我試過了
SELECT * FROM Cars C
LEFT JOIN CarColors CC ON C.CarID = CC.CarID
ORDER BY RAND()
LIMIT 2
但是,可以理解的是,這會回傳兩行。
我嘗試了一個子查詢,比如
SELECT * FROM Cars C
LEFT JOIN CarColors CC ON C.CarID = CC.CarID
WHERE C.CarID IN (SELECT CarID FROM Cars
ORDER BY RAND()
LIMIT 2)
但是 MYSQL 不支持子查詢中的 LIMIT。
當我嘗試搜索此內容時,我得到了限制 JOIN 結果的答案(例如每輛車 1 種顏色)
uj5u.com熱心網友回復:
如果你的 MySQL 版本支持ROW_NUMBER視窗功能,你可以試試這個
SELECT * FROM
(
SELECT *,ROW_NUMBER() OVER(ORDER BY RAND()) rn
FROM Cars
) C LEFT JOIN CarColors CC ON C.CarID = CC.CarID
WHERE rn <= 2
sqlfiddle
另一種方法是您可以只使用子查詢來獲取隨機汽車然后執行JOIN
SELECT * FROM
(
SELECT *
FROM Cars
ORDER BY RAND()
LIMIT 2
) C LEFT JOIN CarColors CC ON C.CarID = CC.CarID
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439328.html
