Mysql

每個匹配的 ids(value) 選擇一項

  • February 9, 2020

我有一個 mysql 表(旅行),其中包含有關汽車的記錄。我希望查詢數據並為每個 carId 返回一項。但是我做不到。下面是獲取 50 條記錄的查詢範例,其中也應該有 50 個 carId

SELECT * 
FROM `trips` 
WHERE (   carId = 147 
      OR carId = 62 
      OR carId = 59 
      OR carId = 42) 
LIMIT 50

下面是一個返回 8 條記錄的範例。如何返回限制 8 條記錄,但每輛車返回一條記錄。這裡的例子

SELECT * 
FROM `trips` 
WHERE carId in (147, 62, 59, 42) 
GROUP by carId;

刪除LIMIT並確保每個 carId 獲得一行。如果在 ( ) 中放入 20 個 id,您將獲得 20 個獨占行。

但這給出了一個粗略的結果,因為它可能會選擇與 carId 匹配的任何一行您可以添加一些條件來獲取每個carId的任何首選行。

引用自:https://dba.stackexchange.com/questions/258941