我正在嘗試獲取具有相同醫學 ID 和唯一保險 ID 以及最后插入的行的資料。將 Group by 和 Order by 放入其中,但其中沒有最后插入的隨機資料。我試過這段代碼但沒有最后插入的資料
SELECT
`m1`.`*`
FROM
(
`pricings` `m1`
LEFT JOIN `pricings` `m2` ON
(
(
(
`m1`.`medicine_id` = `m2`.`medicine_id`
)
)
)
)
WHERE m1.medicine_id = 2
group BY m1.insurance_id DESC
ORDER BY m1.created_at;
這是總行數。 這是一張完整的桌子
| ID | 醫學_id | 保險編號 | created_at |
|---|---|---|---|
| 4311 | 2 | 1 | 2021-04-12 16:05:07 |
| 4766 | 2 | 1 | 2022-01-15 11:56:06 |
| 4767 | 2 | 38 | 2021-05-12 08:17:11 |
| 7177 | 2 | 38 | 2022-03-30 10:14:11 |
| 4313 | 2 | 39 | 2021-04-12 16:05:46 |
| 4768 | 2 | 39 | 2021-05-12 08:17:30 |
| 1356 | 2 | 40 | 2020-11-02 11:25:43 |
| 3764 | 2 | 40 | 2021-03-08 15:42:16 |
| 4769 | 2 | 40 | 2021-05-12 08:17:44 |
我想喜歡這個
| ID | 醫學_id | 保險編號 | created_at |
|---|---|---|---|
| 4766 | 2 | 1 | 2022-01-15 11:56:06 |
| 4768 | 2 | 39 | 2021-05-12 08:17:30 |
| 4769 | 2 | 40 | 2021-05-12 08:17:44 |
| 7177 | 2 | 38 | 2022-03-30 10:14:11 |
uj5u.com熱心網友回復:
MySQL 5.x:使用子查詢查找每個組的最大 created_at 值,然后將其連接到源表以識別它來自的行。
SELECT
p.`*`
FROM
`pricings` p
INNER JOIN
(
SELECT
`medicine_id`,
`insurance_id`,
MAX(created_at) AS `created_at`
FROM
`pricings`
GROUP BY
`medicine_id`,
`insurance_id`
)
p_max
ON p.`medicine_id` = p_max.`medicine_id`
AND p.`insurance_id` = p_max.`insurance_id`
AND p.`created_at` = p_max.`created_at`
WHERE
p.`medicine_id` = 2
ORDER BY
p.`created_at`;
MySQL 8:ROW_NUMBER()用于列舉每個組,然后從每個組中選擇第一行。
SELECT
p.`*`
FROM
`pricings` p
FROM
(
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY `medicine_id`,
`insurance_id`
ORDER BY `created_at` DESC
)
AS `row_id`
FROM
`pricings`
)
p
WHERE
p.`medicine_id` = 2
AND p.`row_id` = 1
ORDER BY
p.`created_at`;
uj5u.com熱心網友回復:
也將其添加為答案。我沒有對其進行測驗,只需修復格式以與您正在使用的任何版本的資料庫一起使用,然后讓我知道結果。
SELECT m1.id , m1.Insurance_id , m1.medicine_id , max(m1,created_at)
FROM (
`pricings` `m1` LEFT JOIN `pricings` `m2` ON `m1`.`medicine_id` = `m2`.`medicine_id`
)
WHERE m1.medicine_id = 2 and m1.insurance_id in (1,39,40,38)
GROUP BY m1.insurance_id DESC
ORDER BY m1.created_at;
編輯。我還洗掉了 6 個額外的括號,我看不出它們有什么用
uj5u.com熱心網友回復:
你放置一個有條件的having created_at = max(created_at)
,這樣您只會得到最近上傳的一條記錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480131.html
標籤:mysql sql 加入 mysql-选择数据库
