使用 INNER JOIN 获取最后一条记录
Get the last record with INNER JOIN
我正在尝试获取最后一条记录,但我得到了第一条记录。
我做错了什么?
我的Table权限
|id|pid|uid|
| 1| 2 | 2 |
| 2| 5 | 2 |
我的Table水果
|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 |
您的连接没有连接任何行。 fruits.pid
的值始终为 1。permissions.pid
的值是 (2, 5)。因此,您的 fruits.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
作为查询的第二个字段 return,但该列仅包含 2 和 5,如前所述,但您希望此处的值为 1;因此,您似乎希望 return 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
我正在尝试获取最后一条记录,但我得到了第一条记录。 我做错了什么?
我的Table权限
|id|pid|uid|
| 1| 2 | 2 |
| 2| 5 | 2 |
我的Table水果
|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 |
您的连接没有连接任何行。 fruits.pid
的值始终为 1。permissions.pid
的值是 (2, 5)。因此,您的 fruits.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
作为查询的第二个字段 return,但该列仅包含 2 和 5,如前所述,但您希望此处的值为 1;因此,您似乎希望 return 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