我試圖獲得最后一條記錄,但我獲得了第一條記錄。我究竟做錯了什么?
我的表權限
|id|pid|uid|
| 1| 2 | 2 |
| 2| 5 | 2 |
我的餐桌水果
|id|pid|number1|number2|
|1 | 1 | 50 | 100 |
|2 | 1 | 10 | 100 |
|3 | 1 | 100 | 100 | <== Try get last record
我想得到最后的記錄,但我不能。
我創建了查詢,但不起作用:
SELECT DISTINCT(fruits.pid), permission.pid, fruits.number1, fruits.number2
FROM permission
LEFT JOIN fruits ON permission.pid = fruits.pid
WHERE permission.uid = '2'
GROUP BY fruits.pid
ORDER BY fruits.id DESC
我需要結果:
|pid|pid|number1|number2|
|3 | 1 | 100 | 100 |
uj5u.com熱心網友回復:
您的加入不會加入任何行。的值fruits.pid始終為 1。的值為permissions.pid(2, 5)。因此,您的 join offruits.pid = permission.pid找不到任何匹配的行,因此您沒有得到預期的結果。如果您洗掉DISTINCT查詢中的 并洗掉GROUP BY(這會導致它在 MySQL 8 中失敗),您的查詢會產生:
pid pid number1 number2
null 2 null null
null 5 null null
你想要的行不在結果集中,所以你當然沒有得到它。
您遇到的另一個問題是數字 3 不在列中fruits.pid。這是一個id價值,所以我懷疑你加入了錯誤的領域。您已經獲得了permission.pid查詢回傳的第二個欄位,但該列僅包含 2 和 5,如前所述,但您希望那里的值為 1;因此,您似乎希望fruits.pid作為結果集的第二列回傳。所以像:
SELECT fruits.id, fruits.pid, fruits.number1, fruits.number2
FROM fruits
LEFT JOIN permission
ON permission.id = fruits.pid
WHERE permission.uid = '2'
ORDER BY fruits.id DESC
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/365536.html
上一篇:MySQL加入分組并沒有完美加入
