mysql - 如何检索mysql中 "count"列之前的最后一个id值?

标签 mysql sql count max

当我选择两个表的值时

SELECT 
   tab.id
   ,tab.name
   ,tab2.id
   ,tab2.name
   ,count(distinct tab3.id) as totalusers
FROM master tab
  LEFT JOIN user as tab2 ON tab.id = tab2.cod
  LEFT JOIN user as tab3 ON tab.id = tab3.cod
WHERE tab.id = 5 limit 1
ORDER BY tab2.id DESC

或者

SELECT 
   tab.id
   ,tab.name
   ,tab2.id
   ,tab2.name
   ,count(tab2.id)
FROM master tab
  LEFT JOIN user as tab2 ON tab.id = tab2.cod
WHERE tab.id = 5 limit 1
ORDER BY tab2.id DESC

我得到了

+ ------ + -------- + ------- + --------- + ------------------ + 
| tab.id | tab.name | tab2.id | tab2.name | count(tab3.id)     |
+ ------ + -------- + ------- + --------- + ------------------ + 
| 5      | home1    | 132     | joao      | 3                  |
+ ------ + -------- + ------- + --------- + ------------------ + 

但是tab2.id检索表的第一个值,当我计算值时顺序不起作用,我如何获取最后一个键134和他的名字?

用户

+ ---- + ----- + --- +
| id   | name  | cod |
+ ---- + ----- + --- +
| 132  | joao  |  5  |
+ ---- + ----- + --- +
| 133  | well  |  5  |
+ ---- + ----- + --- +
| 134  | cindy |  5  |
+ ---- + ----- + --- +

观察:MAX() 可以帮助( Return last id and count of id ),但我也需要用户的名称,我可以在没有子查询且只有一行(限制 1)的情况下进行连接吗?

最佳答案

似乎您需要内部联接和分组依据

select tab.id, tab,name, t2.id, t2.name, count(*)
from tab
inner join 
(select id, name, code from 
user where id = (select max(id) from user )) t on t.cod = tab.code
inner join user as uset.code = tab.code
group by tab.id, tab,name, t2.id, t2.name

关于mysql - 如何检索mysql中 "count"列之前的最后一个id值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38574625/

相关文章:

php - 来自 3 个表的 MySQL 数据

sql - 将数据附加到已包含数据的 MySQL 数据库字段

c++ - mysql C++ 中的连接崩溃

php - 数据库查询返回字段以一种顺序,我想以另一种顺序显示它们

mysql - 混合了 mongodb 和 mysql 的 rails 模型

mysql - SQL LEFT JOIN 与返回 NULL 值的 COUNT

mysql - 计算开始时间和结束时间内某个时刻的记录

r - 如何计算数据框每一行的相同值的条目?

javascript - 使用 Lodash 计算并显示每人的记录数

VBA 运行循环,直到达到实例数