考慮到我有以下表/物體:
Posts
| ID | 用戶身份 | 標題 | 內容 |
|---|---|---|---|
| 1 | 1 | 第1條 | 邏輯推理 |
| 2 | 1 | 第1條 | 邏輯推理 |
| 3 | 1 | 第二條 | Lorem ipsum 2 |
| 4 | 2 | 第三條 | 邏輯推理 |
Users
| ID | 姓名 |
|---|---|
| 1 | 約翰·多伊 |
| 2 | 蒂莫西·費舍爾 |
請注意,來自 ID 為 1 的用戶的兩個帖子具有相同的標題和內容。應用程式級別存在錯誤,允許用戶在過去提交兩次帖子,導致“重復”記錄。
我希望查詢所有帖子,但為每個具有重復標題和內容的用戶合并帖子。
理想的結果集如下所示:
| post_id | 作者姓名 | 標題 | 內容 |
|---|---|---|---|
| 1 | 約翰·多伊 | 第1條 | 邏輯推理 |
| 3 | 約翰·多伊 | 第二條 | Lorem ipsum 2 |
| 4 | 蒂莫西·費舍爾 | 第三條 | 邏輯推理 |
SELECT
posts.id as post_id,
users.name as author_name
posts.title,
posts.content
FROM
posts
INNER JOIN
users
ON
posts.user_id = users.id;
無論查詢拉后1或2對李四也沒有什么關系。在實際的資料庫中,我有時間戳,所以我可能只提取最新的。
這可以用 SQL 實作嗎?
uj5u.com熱心網友回復:
你可以使用一個假的聚合函式和分組
SELECT
min(posts.id) as post_id,
users.name as author_name
posts.title,
posts.content
FROM posts
INNER JOIN users ON posts.user_id = users.id
GROUP BY users.name, posts.title, posts.content
uj5u.com熱心網友回復:
在 MySQL 中,您也可以在沒有聚合的情況下執行此操作。但我不確定這是否是一個好習慣(更多資訊在這里 見評論)。
SELECT
posts.id as post_id,
users.name as author_name,
posts.title,
posts.content
FROM
posts
INNER JOIN
users
ON
posts.user_id = users.id
GROUP BY
users.name, posts.title, posts.content;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/356357.html
上一篇:查找產品銷售總額最高的10個用戶
下一篇:將列轉換為串列的Sql子查詢
