简体   繁体   中英

MySQL - Return the last record on the second table then return all in the first table

I have two tables customers and orders, below is the structure.

Table - contacts

id

Table - orders

id
contact_id

How can I select all from contacts table but only select the latest record from the orders table?

SELECT contacts.*, 
       Max(orders.id) 
FROM   contacts 
       LEFT JOIN orders 
              ON contacts.id = orders.contact_id 
GROUP  BY contacts.id; 

But I always gets NULL if I use LEFT JOIN , it only have value if I use INNER JOIN .

You can try to use UNION like

select * from orders order by id desc limit 1
UNION
select * from contacts 

select the latest record in orders and group it first

select contacts.*, orders.id
from contacts
left join (select max(id) as id, contact_id
           from orders
           group by contact_id) orders
     on contacts.id = orders.contact_id


为了汇总联系人表中所有列的最大值,请按功能分组后添加联系人表中的所有列

I trust the answer provided by Alex should work well. The following query shall list all records from contacts and the last id from orders table.

SELECT 
   c.*, 
   (SELECT Max(o.id) FROM orders  o 
    INNER JOIN contacts c1 ON o.id=c1.id
    )as last_order_id
FROM contacts c

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM