我需要從屬于一組用戶的記錄集合中檢索關系中的最新模型。我想出的最好的是:
SELECT
`answers`.*,
answers.created_at,
`questions`.`survey_id` AS `laravel_through_key`
FROM
`answers`
INNER JOIN
`questions` ON `questions`.`id` = `answers`.`question_id`
WHERE
`questions`.`id` IN (4, 5, 6)
AND `user_id` IN (1 , 2, 3)
group by user_id, question_id
ORDER BY `created_at` DESC
這些表是:
問題
- 身份證,文字
答案
- id, user_id (屬于一個用戶), question_id (屬于一個問題)
用戶
- 身份證、姓名
對于 ID 為 1、2、3 的一組用戶 - 我想檢索 ID 為 4、5、6 的問題的答案集 - 但我只想要每個用戶對每個問題的最新答案。換句話說,每個用戶/問題組合應該只有一個答案。我認為使用 GROUP_BY 可以解決問題,但我沒有得到最新的答案。我正在使用 Laravel,但問題更多是 SQL 問題,而不是 Laravel 特定問題。
uj5u.com熱心網友回復:
在 MySQL 8 或更高版本中,您可以使用視窗函式來查找每組最大的 n:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id, question_id ORDER BY created_at DESC) AS rn
FROM answers
WHERE user_id IN (1 , 2, 3) AND question_id IN (4, 5, 6)
)
SELECT *
FROM cte
WHERE rn = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/322182.html
上一篇:我想更新mysql表中的資料,如果列store_url值與列site_url完全相等,則將更新列title_modal
