您好@all我的「SQL-Rails-Translation」存在問題。將SQL查詢翻譯成Rails
DELETE FROM bookings WHERE id NOT IN (SELECT MIN(id) FROM bookings GROUP BY personal_id, wbs, date, hours, cost_center)
Booking.delete_all.where('id NOT IN (?)', Booking.select('MIN(id)').group(:personal_id, :wbs, :date, :hours, :cost_center).map(&:id))
我的SQL查詢的工作就像我想要的方式,但我不知道對不對「翻譯」成軌,因爲上面我的整個預訂表的第二行代碼被刪除。
預先感謝您。
更新
我有正確的 「翻譯」 爲我的SQL查詢。
Booking.delete_all(['id NOT IN (?)', Booking.group(:personal_id, :wbs, :date, :hours, :cost_center).pluck('MIN(id)')])
謝謝你的幫助。我試過了,但它不起作用。我收到以下錯誤消息: 'PG :: GroupingError:FEHLER:Spalte「bookings.id」在GROUP-BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden LINE 1:SELECT「bookings」。「 ID「FROM」預訂「GROUP BY」預訂「。」... ^:SELECT「預訂」。「id」從「預訂」GROUP BY「預訂」。「personal_id」,「預訂」。「wbs」,「預訂「。」日期「,」預訂「,」小時「,」預訂「,」cost_center「 –