我在数据库中创建了两个表。


待办事项清单
todo_list_item


现在,

todo_list表包含


ID
名称


但是有孩子叫列表项,因此是第二个表;

该表todo_list_item包含


ID
list_id
名称
status_id


我想要实现的是:


列出所有todo_lists
显示它们包含多少todo_list_items
根据todo_list从todo_list_item表中获取最后一个status_id


我可以通过一次连接来实现此目的吗,还是我真的必须两次连接todo_list_item表才能分别获得项数和最后一个status_id?

最佳答案

您可以使用以下内容来获取status,具体取决于max(id)中的todo_list_item

select
td.*,
x.total,
tdi.status_id
from todo_list td
left join todo_list_item tdi on td.id = tdi.list_id
join (
 select max(id) as id ,count(*) as total, list_id from todo_list_item group by list_id
)x
on x.id = tdi.id and x.list_id = tdi.list_id

关于mysql - 从联接表中选择最后一个值和总数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29343522/

10-13 04:22